Я хотел бы создать массив индексов двумерной матрицы MxNx2, что-то вроде этого для M = N = 2:
[[[0,0], [0,1]], [[1,0], [1,1]]]
Есть ли простой способ сделать это в Numpy?
С np.indices -
np.indices
np.indices((M,N)).transpose(1,2,0)
Альтернатива перемещению осей -
np.moveaxis(np.indices((M,N)),0,2)
Вот прямой метод, который приводит к непрерывному массиву:
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]]])
Да, вы можете использовать np.meshgrid [numpy-doc] здесь:
np.meshgrid
np.transpose(np.<b>meshgrid(</b>np.arange(m), np.arange(n)<b>)</b>)
Например, для m = 3 и n = 4:
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]]])