2014-02-26 56 views
1

代碼:NumPy的創建由fromfunction誤差

n=3 
x=np.fromfunction(lambda i,j: (i==1)and(j==1), (n,n), dtype=int) 

導致 「ValueError異常:陣列的具有多於一個元素的真值是不明確的使用a.any()或a.all()」。

有什麼問題?

回答

4

該文檔具有誤導性。函數不會被每個單獨的單元格的索引重複調用;它被調用一次,索引數組一次代表所有單元的索引。這一個函數調用的返回值直接返回:

>>> numpy.fromfunction(lambda *args: 1, (2, 2)) 
1 
>>> numpy.fromfunction(lambda *args: args, (2, 2)) 
(array([[ 0., 0.], 
     [ 1., 1.]]), array([[ 0., 1.], 
     [ 0., 1.]])) 

你需要修改你的函數來操作這種方式:

lambda i, j: (i==1) & (j==1) 
#     ^elementwise bitwise and 
+2

我想第二個聲明。「該文檔是誤導」 。 – Ymareth