我这样做是这样的:首先将所有输入扩充为全尺寸数组,然后根据输入条件,分别计算结果。
xx = x + 0*y + 0*z
yy = 0*x + y + 0*z
zz = 0*x + 0*y + z
result = np.zeros(xx.shape)
id1 = (xx>0)*(yy>0)*(zz>0)
result[id1] = function1(xx[id1],yy[id1],zz[id1])
id2 = (xx>0)*(yy<0)*(zz>0)
result[id2] = function2(xx[id2],yy[id2],zz[id2])
...
它有效,但看起来笨拙且效率低下。有没有更好的办法?例如没有显式复制数组?