У меня есть 3 одномерных массива numpy x
, y
и z
.
Я хочу использовать значения этих числовых массивов для создания трехмерного числового массива (скажем, result
), значения которого являются функциями значений, содержащихся в x
, y
и z
.Я хочу, чтобы форма result
была ( len(x) , len(y) , len(z) )
.Значение, содержащееся в каждом индексе result
, получается из нелинейной функции (скажем, func
), которая использует соответствующие элементы из x
, y
и z
.Например, значение, содержащееся в result[i,j,k]
, получается из func(x[i] , y[j] , z[k])
.Эта же линейная функция используется для получения всех элементов result
. Какой самый эффективный способ сделать это? В моей реальной работе массивы x
, y
и z
будут очень больших размеров.
Я даюПример кода, который я использую ниже.В этом коде используется функция func = sin (x 2 ) • sin (y 2 ) • sin (z 2 ) Эта функцияэто только один пример нелинейной функции.Я хотел бы, чтобы код не был специфичным для вышеупомянутой функции (то есть, мне бы хотелось, чтобы код имел возможность использовать другие различные нелинейные функции.) Ниже приведен код, который у меня сейчас:
import numpy as np
x = np.array([1,2,3])
y = np.array([4,5,6])
z = np.array([7,8,9])
def func( xval, yval, zval ):
return np.sin(xval**2) + np.sin( yval**2 ) + np.sin( zval**2 )
results = np.zeros( shape=( len(x) , len(y) , len(z) ) )
for i in range(len(x)):
for j in range(len(y)):
for k in range(len(z)):
results[i,j,k] = func( x[i], y[j], z[k] )
Любая помощь будет оценена.