2016-11-20 72 views
1

我有下面的Python表達我的代碼以下Python表達式如何工作?

import numpy as np 
a = np.array([1,0,1,0]) 
b = np.array([True,False,False,True]) 
print a[b],b[a] 

輸出我得到這個樣子的:

[1 0] [False True False True] 

我無法理解如何生成此輸出。
任何人都可以解釋它。

+0

我建議你學習'numpy'的基礎知識。之後,你會找出這個問題的答案。 –

回答

5

他們是兩個差別的情況下

a[b]邏輯索引。索引b必須是布爾數組,相同大小a。每個布爾值b表示取/離開這個元素a。即:對於向量中的a_i, b_i中的每對值a, b:如果b_i == True,則向輸出向量添加a_i,否則忽略它。

b[a]正在索引多個值。就像在普通的Python中,你可以做b[0]採取第一個值b,在numpy中你可以使用一個數組作爲索引,來獲取多個元素。在你的情況下,這產生了相同的結果[b[1], b[0], b[1], b[0]]

+0

感謝您的回答。我得到了第二個案例,但[b]仍然需要一些解釋。我不明白你的陳述的含義:'b的每個布爾值意味着取/離開這個元素'。 –

+0

是的。感謝您的解釋。因爲我是新人,你將不得不等待我爲你的回答已經做出的積極努力。它需要我有更多的聲譽來做到這一點。所以,等等。 Ur贊同我的問題可能會幫助我獲得更多的聲譽。謝謝 :) –