我试图制作这个矩阵
array([[0,1,2],
[10,11,12],
[100,101,102],
[110,111,112]])
使用此功能
def f(x,y):
if x < 2:
return 10 * x + y
else :
return 100 + 10 * x + 6
和
print(np.fromfunction(f,(4,3),dtype=int)
然而,这给了我一个错误
The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我认为x
并不意味着我打算使用的确切行。
如何修复此功能以获得上述结果,我能否知道问题所在?
答案 0 :(得分:0)
feedingtypes() = wbfeedingtypes.Range("A2:A" & lrowfeedingtypes).Value
答案 1 :(得分:0)
这不起作用的原因是fromfunction传递给它的第一个参数数组对象而不是int。
代码抱怨因为a < 2
是一个数组/ int比较,你应该运行a.all() < 2
工作代码变为:
from numpy import fromfunction
def f(x,y):
if x.all() < 2:
return 10 * x + y
else :
return 100 + 10 * x + 6
print fromfunction(f,(3,3),dtype=int)
答案 2 :(得分:0)
import numpy as np
def f(i,j):
return np.where(i<2, i*10+j, 100+j+10*(i-2) )
print np.fromfunction(f ,(4,3),dtype=int)
输出:
[[ 0 1 2]
[ 10 11 12]
[100 101 102]
[110 111 112]]
np.where
返回单个元素而不是整个数组。