Как сделать смешанное вычисление массивов разных форм с разными условиями - PullRequest
0 голосов
/ 06 июня 2019

Я реализую математическую функцию f (x, y, z) нескольких входов 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])
...

Работает, но выглядит неловко и неэффективно.Есть ли способ лучше?Например, без явного копирования массивов?

...