获取 N 维数组的所有索引作为列表

有没有办法在 Python 中以快速有效的方式获取 N 维数组中所有索引的列表或数组?


例如,图像我们有以下数组:


import numpy as np


test = np.zeros((4,4))


array([[0., 0., 0., 0.],

       [0., 0., 0., 0.],

       [0., 0., 0., 0.],

       [0., 0., 0., 0.]])

我想获得所有元素索引如下:


indices = [ [0,0],[0,1],[0,2] ... [3,2],[3,3] ]


慕尼黑的夜晚无繁华
浏览 144回答 3
3回答

慕雪6442864

使用np.indices一些重塑:np.indices(test.shape).reshape(2, -1).Tarray([[0, 0],         [0, 1],         [0, 2],         [0, 3],         [1, 0],         [1, 1],         [1, 2],         [1, 3],         [2, 0],         [2, 1],         [2, 2],         [2, 3],         [3, 0],         [3, 1],         [3, 2],         [3, 3]])

天涯尽头无女友

我建议使用 制作与数组1形状相同的test数组np.ones_like,然后使用np.where:>>> np.stack(np.where(np.ones_like(test))).T# Or np.dstack(np.where(np.ones_like(test)))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],       [3, 0],       [3, 1],       [3, 2],       [3, 3]])

叮当猫咪

如果您可以使用列表理解test = np.zeros((4,4))indices = [[i, j] for i in range(test.shape[0]) for j in range(test.shape[1])]print (indices)[[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 1], [1, 2], [1, 3], [2, 0], [2, 1], [2, 2], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python