如何创建一个存储多变量函数值的numpy数组?

2 投票
3 回答
4159 浏览
提问于 2025-04-15 14:05

我想创建一个数组,用来存放一个函数 f(x,y,z)。如果这个函数只涉及一个变量,我可以这样做,比如:

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

这样可以得到 sin(x),当 x[-5,5] 这个范围内时。

那么,怎么才能做到类似的事情,得到比如 sin(x+y+z) 呢?

3 个回答

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

4

这段内容是关于编程问题的讨论,通常会涉及一些技术细节和解决方案。为了让初学者更容易理解,我们可以把这些复杂的概念用简单的语言来解释。

在编程中,遇到问题是很常见的。很多时候,程序员会在网上寻求帮助,比如在StackOverflow这样的平台上。这里的讨论通常会包括一些代码示例和解决方案,帮助大家理解如何解决特定的问题。

如果你看到一些代码块,比如

xyz = numpy.mgrid[-5:5,-5:5,-5:5]
sinxyz = numpy.sin(xyz[0]+xyz[1]+xyz[2])
,这些是用来展示具体代码的地方。理解这些代码的意思和它们是如何工作的,对学习编程非常重要。

总之,编程就像解谜一样,遇到问题时可以通过查找资料和请教他人来找到答案。希望这些内容能帮助你更好地理解编程的世界。

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)

撰写回答