Arrays 按正确顺序创建Numpy栅格

Arrays 按正确顺序创建Numpy栅格,arrays,numpy,Arrays,Numpy,我有几个沿x、y、y轴的点阵列,希望创建一个包含所有点的栅格,如下所示: x = [1, 2, 3] y = [20, 40, 60, 80] result = [] for xi in x: for yi in y: result.append([xi, yi]) np.array(result) 这让我 array([[ 1, 20], [ 1, 40], [ 1, 60], [ 1, 80], [ 2, 20

我有几个沿x、y、y轴的点阵列,希望创建一个包含所有点的栅格,如下所示:

x = [1, 2, 3]
y = [20, 40, 60, 80]
result = []
for xi in x:
    for yi in y:
        result.append([xi, yi])
np.array(result)
这让我

array([[ 1, 20],
       [ 1, 40],
       [ 1, 60],
       [ 1, 80],
       [ 2, 20],
       [ 2, 40],
       [ 2, 60],
       [ 2, 80],
       [ 3, 20],
       [ 3, 40],
       [ 3, 60],
       [ 3, 80]])
要使用numpy执行此操作,我发现以下代码有问题:

np.vstack(np.meshgrid(x, y)).reshape(2, -1).T
但这会以错误的顺序给出结果:

array([[ 1, 20],
       [ 2, 20],
       [ 3, 20],
       [ 1, 40],
       [ 2, 40],
       [ 3, 40],
       [ 1, 60],
       [ 2, 60],
       [ 3, 60],
       [ 1, 80],
       [ 2, 80],
       [ 3, 80]])
它首先通过x值,然后是y值

我可以通过使用

np.vstack(reversed(np.meshgrid(y, x))).reshape(2, -1).T
但这在3D中已经不起作用了

np.vstack(np.meshgrid(x, y, z)).reshape(3, -1).T
首先通过z值,然后是x值,然后是y值


如何使用numpy在所有维度中获得正确的顺序?

您可以在
np.meshgrid
中指定矩阵索引
ij
作为
索引
参数以获得相反的顺序,默认情况下,它是笛卡尔索引顺序
xy

x = [1, 2, 3]
y = [20, 40, 60, 80]

np.stack(np.meshgrid(x, y, indexing='ij'), axis=-1).reshape(-1, 2)
#array([[ 1, 20],
#       [ 1, 40],
#       [ 1, 60],
#       [ 1, 80],
#       [ 2, 20],
#       [ 2, 40],
#       [ 2, 60],
#       [ 2, 80],
#       [ 3, 20],
#       [ 3, 40],
#       [ 3, 60],
#       [ 3, 80]])

在3d中,这可能是:

np.stack(np.meshgrid(x, y, z, indexing='ij'), axis=-1).reshape(-1, 3)