2013-07-30 53 views
1

这是我的问题:我正在处理来自不同接收者的输出,并且它们按数字列在数组的第0列中。我试图找到与某些显示的接收器值相对应的索引。对于我下面的代码,我试图找到值为6的所有索引。在numpy数组中查找重复值的索引

我的问题是,对于输出(打印),我只得到[],好像没有对应的索引接收器6的值。我已经看过数据文件并知道这是不正确的。数据文本文件是一个4x22000ish阵列。任何帮助将不胜感激。谢谢。

from numpy import * 

data = loadtxt("/home/***") 
s,t,q = data[:,0], data[:,2], data[:,3]       
t,q = loadtxt("/home/***", usecols = (2,3), unpack=True) 

indices = [] 
for index, value in enumerate(data[:,0]): 
    if value == '6': 
     indices.append(index) 

print indices 

回答

1
numpy.nonzero(data[:,0]==6)[0] 

数据[:,0] == 6个返回布尔值的阵列,1当条件为真,0时它是假

numpy.nonzero返回非零元素的索引容器

内还可能有兴趣知道,你可以做这样的事情

data[data[:,0]==6,2] 

抢当第一列为零时第二列的所有元素

+0

它工作得很好!谢谢! – boson