提取列表中指定元素的索引

时间:2017-06-26 12:32:07

标签: python numpy

我有一份清单。每个元素都是一个实数值整数,我想提取指定元素的索引。例如:

import numpy as np
idx = np.where(A==1) #A is a list of [1,1,2,3,4,5....]

np.where似乎不适用于列表。

我的下一个任务是根据获得的索引从另一个列表B获取新列表:

C = B[idx]

3 个答案:

答案 0 :(得分:4)

将列表A转换为ndarray,它应该可以正常工作

idx = np.where(np.array(A)==1)
C = [B[i] for i in idx[0]]

答案 1 :(得分:1)

不需要numpy IMO。您可以使用以下内容创建B:

B = [ele for ele in A if ele == 1]

答案 2 :(得分:1)

如果A是一个vanilla列表(Python中的默认列表),那么Python将解释:

A == 1

检查 list 是否等于1。这当然不是真的。

您应该将A变成数组:

Aa = np.array(A)        # construct a numpy array
idx = np.where(Aa == 1) # obtain the indices
B = Aa[idx]             # make a copy (again on the numpy array)