1

有没有更简单的方法来获取 ndarray 中所有值的总和(假设它们都是数字):

import numpy as np

m = np.array([[1,2],[3,4]])

result = 0
(dim0,dim1) = m.shape
for i in range(dim0):
    for j in range(dim1):
        result += m[i,j]

print result

对于简单的数学运算,上面的代码似乎有些冗长。

谢谢!

4

2 回答 2

4

只需使用numpy.sum()

result = np.sum(matrix)

或者等效地,.sum()数组的方法:

result = matrix.sum()

默认情况下,这对数组中的所有元素求和 - 如果您想对特定轴求和,您也应该传递axis参数,例如matrix.sum(0)对第一个轴求和。

作为旁注,您的 " matrix" 实际上是 a numpy.ndarray,而不是 a numpy.matrix-它们是行为略有不同的不同类,因此最好避免将两者混淆。

于 2013-10-07T10:16:24.367 回答
1

是的,只需使用以下sum方法:

result = m.sum()

例如,

In [17]: m = np.array([[1,2],[3,4]])

In [18]: m.sum()
Out[18]: 10

顺便说一句,NumPy 有一个矩阵类,它与“常规”numpy arrays 不同。因此,调用常规 ndarraymatrix会导致一些认知失调。为了帮助其他人理解您的代码,您可能需要将名称更改为matrix其他名称。

于 2013-10-07T10:15:03.933 回答