【问题标题】:Get indices of elements that are greater than a threshold in 2D numpy array获取二维numpy数组中大于阈值的元素的索引
【发布时间】:2017-06-01 08:18:55
【问题描述】:

我有一个 2D numpy 数组:

x = [[  1.92043482e-04   0.00000000e+00   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00   2.41005634e-03   0.00000000e+00
    7.19330120e-04   0.00000000e+00   0.00000000e+00   1.42886875e-04
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
    0.00000000e+00   9.79279411e-05   7.88888657e-04   0.00000000e+00
    0.00000000e+00   1.40425916e-01   0.00000000e+00   1.13955893e-02
    7.36868947e-03   3.67091988e-04   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00   1.72037105e-03   1.72377961e-03
    0.00000000e+00   0.00000000e+00   1.19532061e-01   0.00000000e+00
    0.00000000e+00   0.00000000e+00   0.00000000e+00   3.37249481e-04
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00   1.75111492e-03   0.00000000e+00
    0.00000000e+00   1.12639313e-02]
 [  0.00000000e+00   0.00000000e+00   1.10271735e-04   5.98736562e-04
    6.77961628e-04   7.49569659e-04   0.00000000e+00   0.00000000e+00
    2.91697850e-03   0.00000000e+00   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00   3.30257021e-04   2.46629275e-04
    0.00000000e+00   1.87586441e-02   6.49103144e-04   0.00000000e+00
    1.19046355e-04   0.00000000e+00   0.00000000e+00   2.69499898e-03
    1.48525386e-02   0.00000000e+00   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00   0.00000000e+00   1.18803119e-03
    3.93100829e-04   0.00000000e+00   3.76245304e-04   2.79537738e-02
    0.00000000e+00   1.20738457e-03   9.74669064e-06   7.18680093e-04
    1.61546793e-02   3.49360861e-04   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00]]

如何获取大于0.01 的元素的索引?

现在,我正在使用t = np.argmax(x, axis=1) 来获取每个最大值的索引,结果是:[21 35]。如何实现上述目标?

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    您可以使用np.argwhere 来返回数组中与布尔条件匹配的所有条目的索引:

    >>> x = np.array([[0,0.2,0.5],[0.05,0.01,0]])
    
    >>> np.argwhere(x > 0.01)
    array([[0, 1],
           [0, 2],
           [1, 0]])    
    

    【讨论】:

    • 嗯,我想我不清楚如何解释 np 数组。在(array([0, 1]),array([1, 0]))中,为什么是array[1,0]而不是[0,1]?
    • 因为它们是 numpy 对象
    • 我不确定这是否给了我正确的结果。我做了t = np.where(x > 0.01,得到的输出是:(array([0, 0, 0, 0, 1, 1, 1, 1]), array([21, 23, 34, 49, 17, 24, 35, 40])). 但是,第一个元素甚至没有 21,这是使用 argmax 时返回的。
    • 哦抱歉其实第一个数组是 x 坐标,第二个数组是 y 坐标,你需要压缩它们以获得 x-y 坐标,我会编辑我的答案
    • 其实你用的是argwhere
    猜你喜欢
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 2021-02-19
    • 2020-06-30
    相关资源
    最近更新 更多