2009-09-05 54 views
2

我想创建一个数组,其中包含一个函数f(x,y,z)。如果它是一个变量的函数,我会做,比如:如何创建一个包含多变量函数值的numpy数组?

sinx = numpy.sin(numpy.linspace(-5,5,100)) 

获得sin(x)x[-5,5]

我如何可以做同样的获得,例如sin(x+y+z)

+0

x,y,z和/或你计划如何产生它们的值是多少? – Parthan 2009-09-05 10:33:21

+0

x,y,z在所有三维上都是'numpy.linspace(-5,5,100)'的笛卡尔乘积。我不知道生成它们的最佳方式。我想这是问题的先决条件。 – 2009-09-05 10:58:15

回答

5

我似乎已经找到一种方法:

# define the range of x,y,z 
x_range = numpy.linspace(x_min,x_max,x_num) 
y_range = numpy.linspace(y_min,y_max,y_num) 
z_range = numpy.linspace(z_min,z_max,z_num) 

# create arrays x,y,z in the correct dimensions 
# so that they create the grid 
x,y,z = numpy.ix_(x_range,y_range,z_range) 

# calculate the function of x, y and z 
sinxyz = numpy.sin(x+y+z) 
4
xyz = numpy.mgrid[-5:5,-5:5,-5:5] 
sinxyz = numpy.sin(xyz[0]+xyz[1]+xyz[2]) 
-1

的numpy.mgrid功能将发挥同样的

x,y,z = numpy.mgrid[x_min:x_max:x_num, y_min:y_max:y_num, z_min:z_max:z_num] 
sinxyz = numpy.sin(x+y+z) 

编辑:以得到它的工作x_numy_numz_num必须是显式数字,后跟j,例如,x,y = numpy.mgrid[-1:1:10j, -1:1:10j]

相关问题