我有一个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]
将返回元素的索引而不是元素本身。
答案 0 :(得分:0)
使用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)
答案 1 :(得分:0)
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]),)
答案 2 :(得分:0)
纯Python的列表理解:
ar = [i for i in range(len(a))if a [i] == 1]