用Python求和的二维数组

时间:2018-12-30 19:15:14

标签: python

我有两个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])

为什么会生成一维数组?

2 个答案:

答案 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将遍历给定的数组,并且迭代恰好是按行进行的,因此将累加各个行(我称您的数组XY):

>>> 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])

如果您想对XY进行元素求和,则...将它们相加:result = X + Y