有没有一种方法来总结所有的列和行在一个2d数组不使用np.sum()?



这是我当前的代码:

M = np.array([[1, 2, 3],
[4, 5, 6]])
def np_sum_rows(M):  
rows = []
for i in range(len(M)):
rows = M[i, 0:len(M[0])
return rows.sum()

我希望函数返回一个向量[6 15]。然而,for循环只能存储并返回15。我确实被这个问题难住了,除了使用for循环之外,我想不出任何其他方法。

您可以应用来自函数式编程背景的reduce方法。这在Python和基于numpy的方式中都是可能的。

在Python中,你需要将两个参数的函数累加到序列的项上。

import functools
M = M.tolist() #convert array to list in order to make iteration faster
[reduce(lambda x, y: x+y, m) for m in M]
>>> [6, 15]

numpy中,通常不需要定义函数。通用函数(简称ufunc),如addmultiply等被使用。

np.add.reduce(M, axis=1)
>>> array([ 6, 15])

注意,更常见的方法是在轴1上应用np.sum。因此,强烈建议您习惯numpy轴的概念。

最新更新