在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 这个。简单吧,遍历都不用想。
就讲到这里了。学会了就容易,不学么听起来就难了。