【问题标题】:检索矩阵中特定值的索引并将其放入嵌套列表中
【发布时间】:2022-01-23 13:47:59
【问题描述】:

我有这个矩阵;假设这个矩阵中有数百个 x 值和数千个 y 列表:

[[100   0   0 ...   0   0   0]
 [  0 100   0 ...   0   0   0]
 [  0   0 100 ...   0   0   0]
 ...
 [  0   0   0 ... 100   0   0]
 [  0   0   0 ...   0 100   0]
 [  0   0   0 ...   0   0 100]]

如何检索value >= 90 的索引并将其放入嵌套列表中?

这是示例输出:

[[0], [1, 167], [2, 498, 2890] ... [6568, 99998], [7894, 19695, 99999], [873, 100000]]

【问题讨论】:

  • 那是 numpy 二维数组?
  • @azro
  • 查看我的答案,它使用 numpy 数组的强大功能,比 python 列表快得多

标签: python python-3.x


【解决方案1】:

尝试使用嵌套列表推导:

[[idx for idx, value in enumerate(row) if value >= 90] for row in arr]

要获得@azro 的结果,我宁愿使用:

np.argwhere(arr >= 90)

【讨论】:

    【解决方案2】:

    帖子 numpy get index where value is true 可能会有所帮助

    numpy.transpose((array > value).nonzero())

    import numpy as np
    
    values = np.array([[1, 76, 987, 1, 1, 1], [876, 76, 765, 1, 1, 1], [1, 3, 4, 1, 1, 1],
                       [1, 3, 4, 1, 1, 1], [1, 3, 4, 1, 1, 1], [1, 3, 4, 1, 1, 123]])
    
    result = np.transpose((values > 90).nonzero())
    print(result)
    
    [[0 2]
     [1 0]
     [1 2]
     [5 5]]
    

    【讨论】:

    • 1) 这不是 OP 想要的输出 2) 使用 numpy 我宁愿使用 argwhere,就像我的回答一样。
    猜你喜欢
    • 2018-07-12
    • 1970-01-01
    • 2017-04-19
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    相关资源
    最近更新 更多