我觉得我在这里错过了明显的东西,但当我尝试一个非常简单的numpy.sum用法时,
import numpy as np
np.sum(1,2)
我收到以下错误,
ValueError: 'axis' entry is out of bounds
所以我尝试了以下
import numpy as np
np.sum(1,2, axis = 0)
会出现以下错误
TypeError: sum() got multiple values for argument 'axis'
任何人都有任何智慧的话语?我觉得这应该是这么简单。谢谢!
答案 0 :(得分:5)
help(np.sum)
显示了该功能的呼叫签名:
In [72]: help(np.sum)
sum(a, axis=None, dtype=None, out=None, keepdims=False)
Sum of array elements over a given axis.
当您致电np.sum(1, 2)
时,np.sum
会收到两个positional arguments,1和2。
a
绑定到第一个位置参数1,axis
绑定到第二个位置参数2。
这会引发ValueError: 'axis' entry is out of bounds
,因为数组标量,
np.array(1)
没有2轴。
当您致电np.sum(1, 2, axis=0)
时,a
被绑定为1,axis
被分配两次,首先是位置参数2,还有关键字参数axis=0
。
这会导致Python引发TypeError: sum() got multiple values for argument 'axis'
。
当函数接受任意数量的参数时,函数签名就是这样编写的:
func(x1 [, x2 [...]])
例如,请参阅zip
的函数签名:
In [84]: help(zip)
zip(...)
zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]
或简单地使用省略号:
In [83]: help(min)
min(...)
min(iterable[, key=func]) -> value
min(a, b, c, ...[, key=func]) -> value
作为juanchopanza shows,要将1和2都传递给a
,您可以使用
In [76]: np.sum([1,2])
Out[76]: 3
因为[1,2]
是一个对象 - 包含1和2的列表。
答案 1 :(得分:2)
numpy.sum
在类似数组的对象上运行。所以以下方法可行:
np.sum([1,2])
a = np.array([1,2,3,4,5])
np.sum(a)
如有疑问,请使用帮助:
>>> help(np.sum)