是否有更简单的方法来获取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
对于简单的数学运算,上面的代码似乎有些冗长。
谢谢!
答案 0 :(得分:2)
只需使用numpy.sum()
:
result = np.sum(matrix)
或等效地,数组的.sum()
方法:
result = matrix.sum()
默认情况下,这会对数组中的所有元素求和 - 如果要对特定轴求和,则还应传递axis
参数,例如matrix.sum(0)
总结第一个轴。
作为旁注,您的“matrix
”实际上是numpy.ndarray
,而非numpy.matrix
- they are different classes that behave slightly differently,因此最好避免混淆两者。
答案 1 :(得分:1)
是的,只需使用sum
方法:
result = m.sum()
例如,
In [17]: m = np.array([[1,2],[3,4]])
In [18]: m.sum()
Out[18]: 10
顺便说一句,NumPy有一个矩阵类different than "regular" numpy arrays。因此,调用常规ndarray matrix
会导致一些认知失调。为了帮助其他人了解您的代码,您可能希望将名称matrix
更改为其他内容。