2016-10-17 59 views
0

我有一個numpy矩陣,其中我在每行的第一個元素中存儲某種類型的鍵(或者以另一種方式,所有鍵都在第一列中)。使用行的第一個元素找到行號

[[123,0,1,1,2], 
[12,1,2,3,4], 
[1,0,2,5,4], 
[90,1,1,4,3]] 

我想通過鍵獲取行號搜索。我發現我們可以使用numpy.where,但不清楚如何使用它來獲取行號。我想要類似

>>numpy.func(myMatrix,90) 
3 

任何幫助,將不勝感激。

+1

如果你有一個鍵和一些數據,你應該使用字典,而不是一個列表。按鍵查找項目是快速的,通過列表搜索slowwwww。 –

+0

_行號(名詞,指行的位置,矩陣的_'line'_)和_raw_(形容詞,表示_wild,brute_或_unedited,unprocessed_)號碼是不同的。後者可能甚至不是一個有效的術語。我想你在這裏討論的是_row_數字。 – ForceBru

+2

爲什麼不使用熊貓DataFrame?您的密鑰列將作爲索引,並且您可以通過多種方式選擇,分組和數據子集。 – pbreach

回答

0

將第一列與中的90進行比較。它會返回其相等與90項目的索引數組:

In [3]: A = np.array([[123,0,1,1,2], 
[12,1,2,3,4], 
[1,0,2,5,4], 
[90,1,1,4,3]]) 


In [6]: np.where(A[:,0]==90)[0] 
Out[6]: array([3]) 
1

按照online docnumpy.where如果你給它只是一個布爾陣列將返回座標表(每個維度中的一個列表)的元素是True。 因此,我們可以通過抓取數組的第一列,將它與要查找的元素進行比較,然後在該布爾數組上調用np.where來獲取所需的信息。看起來像這樣:

row,column=np.where(myMatrix[;,0]==90) 
#Note that column will just be 0 here 
相關問題