【问题标题】:How can I create a numpy array holding values of a multi-variable function?如何创建一个包含多变量函数值的 numpy 数组?
【发布时间】:2010-11-25 20:28:42
【问题描述】:

我想创建一个包含函数f(x,y,z) 的数组。如果它是一个变量的函数,我会这样做,例如:

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

[-5,5] 中为x 获取sin(x)

我怎样才能得到,例如sin(x+y+z)

【问题讨论】:

  • x、y、z 的值是多少和/或您打算如何生成它们?
  • x,y,z 将是numpy.linspace(-5,5,100) 在所有三个维度上的笛卡尔积。我不知道生成它们的最佳方法。我想这是这个问题的先决条件。

标签: python function multidimensional-array numpy


【解决方案1】:

我好像找到了办法:

# 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)

【讨论】:

    【解决方案2】:
    xyz = numpy.mgrid[-5:5,-5:5,-5:5]
    sinxyz = numpy.sin(xyz[0]+xyz[1]+xyz[2])
    

    【讨论】:

      【解决方案3】:

      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]

      【讨论】:

        猜你喜欢
        • 2021-01-27
        • 2021-07-23
        • 1970-01-01
        • 2013-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-03
        • 1970-01-01
        相关资源
        最近更新 更多