【问题标题】:What is the cleanest way of finding the indices of all entries in a numpy array that matches a pattern?在与模式匹配的numpy数组中查找所有条目的索引的最简洁方法是什么?
【发布时间】:2014-02-24 14:25:27
【问题描述】:

有没有办法巧妙地提取数组中与模式匹配的所有值的索引?

以下示例生成一个元组列表,其索引与数组 A 中为真的元素匹配

import numpy as np

A = np.array([[False, False, False, True],
              [False, True, False, False],
              [False, False, False, False]])
indices = list()
for i, K in enumerate(A):
    for j, L in enumerate(K):
        if L:
            indices.append((i, j))

这行得通,但它看起来很丑陋且“unpythonic”。该解决方案的一个特定缺陷是它依赖于 A 的维度。有更好的方法吗?索引是生成为元组列表还是其他易于访问的东西都没有关系。

【问题讨论】:

  • 我认为np.where(A == value) 是标准的

标签: python numpy boolean


【解决方案1】:

你可以使用np.argwhere:

In [1]: A = np.array([[False, False, False, True],
   ...:               [False, True, False, False],
   ...:               [False, False, False, False]])

In [2]: np.argwhere(A == True)
Out[2]: 
array([[0, 3],
       [1, 1]])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-16
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 2020-10-20
    • 1970-01-01
    相关资源
    最近更新 更多