numpy中有arange / linspace的多维版本吗?

冰雹塔:

我想要一个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一个复数代替步(即),该复数的大小指定了序列中所需的点数。使用此语法,将与上述相同的数组指定为:

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

祝你好运!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章