在python中如何把两个矩阵相加减

我们如何把多行多列的矩阵相加或者相减呢?

列表我们会的,多维数组看起来累,实际上多维数组是可以相加相减的,但是有一点需要两个矩阵行数相同,列数也要相同,形成新的矩阵。也就是说,他需要一定的条件,不能去加没有的东西。

所以我们要想做矩阵的加减,就要判断下前提条件,符不符合基本条件。否则不做运算。

代码如下,要的就自己拿。

def jz_add(jz1, jz2):
    # 检查行数和列数是否相同
    if len(jz1) != len(jz2) or any(len(row1) != len(row2) for row1, row2 in zip(jz1, jz2)):
        raise ValueError("矩阵维度不一致,无法相加")
   
    result = [
    [0, 0, 0],
    [0, 0, 0]
]
    for i in range(len(jz1)):
   # 方法1:迭代输出列
     for j in range(len(jz1[0])):
       result[i][j] = jz1[i][j] + jz2[i][j]
 
  
    return result
# 预设2个居住实例化
jz_a = [
    [1, 2, 3],
    [4, 5, 6]
]
jz_b = [
    [7, 8, 9],
    [10, 11, 12]
]
result = jz_add(jz_a, jz_b)
print("相加结果:")
for row in result:
    print(row)

我们通过遍历列表让其对应的位置对应运算,我们看下运行结果。

我们也可以用列表推导,可以简化代码,学会下也好。

def jz_add(jz1, jz2):
    # 检查行数和列数是否相同
    if len(jz1) != len(jz2) or any(len(row1) != len(row2) for row1, row2 in zip(jz1, jz2)):
        raise ValueError("矩阵维度不一致,无法相加")
   
    result = [
    [0, 0, 0],
    [0, 0, 0]
]
    
 
     #使用列表推导式生成结果矩阵
    result = [
       [jz1[i][j] + jz2[i][j] for j in range(len(jz1[0]))]
       for i in range(len(jz1))
    ]
    return result
# 预设2个居住实例化
jz_a = [
    [1, 2, 3],
    [4, 5, 6]
]
jz_b = [
    [7, 8, 9],
    [10, 11, 12]
]
result = jz_add(jz_a, jz_b)
print("相加结果:")
for row in result:
    print(row)

我们再来看看如何相减,只要把加号修改成减号就可以了。其他运算你也就会了,学会一种其他运算就超级简单了。就不多讲;


result = [
       [jz1[i][j] - jz2[i][j] for j in range(len(jz1[0]))]
       for i in range(len(jz1))
    ]

运行下看看


用NumPy模块来操作就更简单了。

直接这样相加jz_a+jz_b ,返回就可以了

jz_a = np.array([
    [1, 2, 3],
    [4, 5, 6]
]
)
jz_b = np.array([
    [7, 8, 9],
    [10, 11, 12]
]
)
result2= jz_a+jz_b
print (result2)

带上import numpy as np 这个。简单吧,遍历都不用想。

就讲到这里了。学会了就容易,不学么听起来就难了。

相关文章

Python算法:4.寻找两个正序数组的中位数

题目:寻找两个正序数组的中位数给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log(m+n...

在Python中怎么用二分法插入一个新的数到数组列表

接昨天的把一个数插入到有序的数组、列表中,我们今天使用二分法来,就好比一个队分成2个队,因为有序的么,先比较中间的,得到结果,只要比较一个方向的一半就可以了,这样一来是不是减少一半的时间,节约是运行时...

Python实现【分割数组的最大差值】

n = int(input()) nums = list(map(int, input().split())) total_sum = sum(nums) max_diff = 0 left_sum...

Python实现【找出两个整数数组中同时出现的整数】

from collections import defaultdict import sys def solve(): # 读取输入 arr1 = list(map(int, sys...

Python实现分治算法?

分治算法(Divide and Conquer Algorithm)是一种设计算法的策略,它将一个问题分成多个相似的子问题,递归地解决这些子问题,然后将结果合并以得到原问题的解。典型的分治算法包括归并...

【找出两个整数数组中同时出现的整数】Python实现

from collections import Counter def find_common_elements(arr1, arr2): # 统计数组中每个数字的出现次数 coun...