我想要一个 2d NumPy 数组 (x,y) 的列表,其中每个 x 位于 {-5, -4.5, -4, -3.5, ..., 3.5, 4, 4.5, 5} 中,y 也相同。
我可以
x = np.arange(-5, 5.1, 0.5) y = np.arange(-5, 5.1, 0.5)
然后迭代所有可能的对,但我确信有更好的方法......
我想要返回看起来像这样的东西:
[[-5, -5], [-5, -4.5], [-5, -4], ... [5, 5]]
但顺序并不重要。
您可以使用np.mgrid为此,它通常比np.meshgrid因为它一步创建数组:
import numpy as np X,Y = np.mgrid[-5:5.1:0.5, -5:5.1:0.5]
对于类似 linspace 的功能,请替换步骤(即0.5) with 一个复数其大小指定了系列中所需的点数。使用此语法,与上面相同的数组被指定为:
0.5
X, Y = np.mgrid[-5:5:21j, -5:5:21j]
然后您可以将您的配对创建为:
xy = np.vstack((X.flatten(), Y.flatten())).T
正如 @ali_m 所建议的,这一切都可以在一行中完成:
xy = np.mgrid[-5:5.1:0.5, -5:5.1:0.5].reshape(2,-1).T
祝你好运!