我有一份清单。每个元素都是一个实数值整数,我想提取指定元素的索引。例如:
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]
答案 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)