我有两个2-D数组,并且尝试对元素进行求和
A = array([[-0.31326169, -0., -3.23995333],
[-0.26328247, -0., -0.64439666]])
B = array([[-0 , -0.28733533, -0.],
[-0 , -2.12692801, -0]])
sum(A + B)
array([-0.57654415, -2.41426334, -3.88434999])
为什么会生成一维数组?
答案 0 :(得分:2)
您正在寻找的是numpy.add
import numpy as np
arr1 = np.array([[-0.31326169, -0., -3.23995333],[-0.26328247, -0., -0.64439666]])
arr2 = np.array([[-0., -0.28733533, -0.],[-0., -2.12692801, -0.]])
arr3=np.add(arr1,arr2)
print(arr3)
输出
[[-0.31326169 -0.28733533 -3.23995333]
[-0.26328247 -2.12692801 -0.64439666]]
答案 1 :(得分:1)
之所以会这样,是因为A + B
是一个2 x 3的数组,然后使用内置的sum
函数对其求和(np.sum
将返回一个数字)。
__builtins__.sum
将遍历给定的数组,并且迭代恰好是按行进行的,因此将累加各个行(我称您的数组X
和Y
):
>>> X + Y
array([[-0.31326169, -0.28733533, -3.23995333],
[-0.26328247, -2.12692801, -0.64439666]])
然后,sum(X + Y)
将执行以下操作:
__sum = 0
for row in (X + Y):
__sum += row
return __sum
因此,将对各个行求和:
>>> X + Y
array([[-0.31326169, -0.28733533, -3.23995333],
[-0.26328247, -2.12692801, -0.64439666]])
>>> _[0] + _[1]
array([-0.57654416, -2.41426334, -3.88434999])
如果您想对X
和Y
进行元素求和,则...将它们相加:result = X + Y
。