为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕尼黑的夜晚无繁华 2021-06-11 14:05:14
有没有办法在 Python 中以快速有效的方式获取 N 维数组中所有索引的列表或数组?例如,图像我们有以下数组:import numpy as nptest = 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] ]
查看完整描述

3 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

使用np.indices一些重塑:


np.indices(test.shape).reshape(2, -1).T

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]])


查看完整回答
反对 回复 2021-06-22
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

我建议使用 制作与数组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]])


查看完整回答
反对 回复 2021-06-22
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

如果您可以使用列表理解


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]]



查看完整回答
反对 回复 2021-06-22
  • 3 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信