【问题标题】:Selecting indexes of elements with a common property in Python在 Python 中选择具有公共属性的元素的索引
【发布时间】:2023-03-26 20:35:01
【问题描述】:

我有一个 numpy 数组,想获取验证公共属性的元素的索引。例如,假设数组是np.array([1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1]),我想让所有元素的索引都等于1,那么输出就是[0, 4, 5, 8, 10, 14]

我已经定义了以下过程

def find_indexes(A):
    res = []
    for i in range(len(A)):
        if A[i] == 1:
            res.append(i)
    return res

有没有更“pythonesque”的方式来做到这一点?更具体地说,我想知道是否有类似于布尔索引的东西:

A[A>=1]

这将返回元素的索引而不是元素本身。

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    使用np.where

      import numpy as np
      x = np.array(np.array([1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1])
      indices, = np.where(x == 1)
      print(indices)
    

    【讨论】:

      【解决方案2】:

      使用numpy.where

      arr = np.array([1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1])
      print np.where(arr == 1)
      (array([ 0,  4,  5,  8, 10, 14]),)
      

      【讨论】:

        【解决方案3】:

        纯python的列表推导:

        ar = [i for i in range(len(a)) if a[i] == 1]

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-08-11
          • 2014-07-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-03
          • 1970-01-01
          相关资源
          最近更新 更多