2013-12-11 60 views
0

有人可以請解釋這條線在python返回? 我知道它可能很容易,但對Python來說是全新的。Python排序問題x [y [:,0]> 50]

result = x[y[:,0]>50] 

結果,x,y都是數組。

+0

產生「TypeError:列表索引必須是整數,而不是元組」。 –

+0

那是純粹的'Python'還是我猜,像'numpy'? – starrify

+0

@RamchandraApte類似這樣的語法對'numpy'完全正確,而'y [:,0]'實際上''我在y中''[i [0]]' – starrify

回答

6

假設你的 「陣列」 是numpy.ndarray S,

打破它分開成片:

y[:,0] 

這將返回一個數組視圖。你可以把它看作一個新的數組(現在)。有顯着差異,但他們不在這裏發揮作用。這是原始數組第一列的視圖。例如:

>>> a 
array([[0, 1, 2], 
     [3, 4, 5], 
     [6, 7, 8]]) 
>>> a[:,0] 
array([0, 3, 6]) 

現在,下一部分:y[:,0] > number。這將返回一個新的布爾值數組。該條件將針對左側數組(或視圖)中的每個元素進行評估並放入輸出中。

>>> a[:,0] > 4 
array([False, False, True], dtype=bool) 

最後,我們有一個布爾索引操作。這需要來自外部數組的布爾型內部數組爲True的元素。

>>> arr2 
array([ 8, 42, 63]) 
>>> a[:,0] > 4 # Just a reminder ... 
array([False, False, True], dtype=bool) 
>>> arr2[a[:,0] > 4] 
array([63]) 
+0

「這是您的原始數組的第一行視圖」 - 第一列。 – user2357112

+0

@ user2357112 - 是的,這就是我的意思。在我發佈之前,我甚至在腦海中仔細考慮了這一點......我想這很難讓fortran退出我的系統。 :) – mgilson

+0

謝謝,這真的很有幫助,現在我必須在Java中做同樣的事情,任何想法? – nette