如何创建行,列索引的MxNx2数组?

时间:2019-10-12 16:42:19

标签: numpy

我想制作一个二维矩阵MxNx2的索引数组,对于M = N = 2这样的东西:

[[[0,0], [0,1]],

 [[1,0], [1,1]]]

在Numpy中有一种简单的方法吗?

3 个答案:

答案 0 :(得分:3)

使用np.indices-

np.indices((M,N)).transpose(1,2,0)

替代转置轴-

np.moveaxis(np.indices((M,N)),0,2)

答案 1 :(得分:1)

这是一种直接方法,可导致连续数组:

M,N = 3,4
MM,NN,DD = np.ogrid[:M,:N,:2]
MM*(1-DD)+NN*DD

结果:

array([[[0, 0],
        [0, 1],
        [0, 2],
        [0, 3]],

       [[1, 0],
        [1, 1],
        [1, 2],
        [1, 3]],

       [[2, 0],
        [2, 1],
        [2, 2],
        [2, 3]]])

答案 2 :(得分:0)

是的,您可以在此处使用np.meshgrid [numpy-doc]

np.transpose(np.meshgrid(np.arange(m), np.arange(n)))

例如m = 3n = 4

>>> np.transpose(np.meshgrid(np.arange(m), np.arange(n)))
array([[[0, 0],
        [0, 1],
        [0, 2],
        [0, 3]],

       [[1, 0],
        [1, 1],
        [1, 2],
        [1, 3]],

       [[2, 0],
        [2, 1],
        [2, 2],
        [2, 3]]])