如何在不同条件下对不同形状的数组进行混合计算

时间:2019-06-06 00:20:29

标签: numpy-ndarray

我正在实现多个输入x,y,z的数学函数f(x,y,z),所有这些输入都是标量或NP数组。根据输入值,必须使用不同的公式。阵列形状可能不同,但应该是一致的。

我这样做是这样的:首先将所有输入扩充为全尺寸数组,然后根据输入条件,分别计算结果。

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])
...

它有效,但看起来笨拙且效率低下。有没有更好的办法?例如没有显式复制数组?

0 个答案:

没有答案