Как я могу создать MxNx2 массив строк, индексов col? - PullRequest
1 голос
/ 12 октября 2019

Я хотел бы создать массив индексов двумерной матрицы MxNx2, что-то вроде этого для M = N = 2:

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

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

Есть ли простой способ сделать это в Numpy?

Ответы [ 3 ]

3 голосов
/ 12 октября 2019

С np.indices -

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

Альтернатива перемещению осей -

np.moveaxis(np.indices((M,N)),0,2)
1 голос
/ 12 октября 2019

Вот прямой метод, который приводит к непрерывному массиву:

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]]])
0 голосов
/ 12 октября 2019

Да, вы можете использовать np.meshgrid [numpy-doc] здесь:

np.transpose(np.<b>meshgrid(</b>np.arange(m), np.arange(n)<b>)</b>)

Например, для m = 3 и n = 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]]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...