2015-08-08 59 views
0

我覺得我缺少明顯的這裏,但是當我嘗試一個非常簡單的numpy.sum用法,簡單numpy.sum引發ValueError異常:「軸」條目是出界

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' 

任何人都有任何智慧的話?我覺得這應該儘可能簡單。謝謝!

回答

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必然是第一個位置al參數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

+0

魔名單。謝謝!不勝感激 – ATD

2

numpy.sum通過類似數組的對象進行操作。所以下面將工作:

np.sum([1,2]) 
a = np.array([1,2,3,4,5]) 
np.sum(a) 

如有疑問,請使用幫助:

>>> help(np.sum)