2017-10-06 52 views
0

我對編程非常陌生,我的教授給了我一點python代碼,在第二行到最後一行有一個明確的錯誤,我不知道該怎麼寫代碼,以便它不會出錯?不知道如何使一行代碼在python中工作

事我曾嘗試:

import numpy as np 
a = np.arange(10) 

b = a[4:8] 
print b 

此返回[3 4 5 6 7]但顯然這是錯誤的。在此之後,我不確定任何其他方式來表達我的教授想要的東西?我曾問她澄清,但沒有什麼幫助:/

這裏是原代碼

import numpy as np 
a = np.arange(10) 

b = a[a > 3 & a < 8] 
print b 

任何想法? 謝謝!

+0

3不大於3.這就是爲什麼你的第一次嘗試是不正確的。 –

回答

0

你缺少括號: b = a[(a > 3) & (a < 8)]應該工作。

0

您需要了解Python中operator precedence的性質。該&><更高的優先級,所以原來的表達基本上是評估:

b = a[a > (3 & a) < 8] 

這顯然不是你想要的。你想評估a > 3,然後a < 8,然後將它們組合。此外,您期望的範圍是3〜7包容性,所以:

b = a[(a >= 3) & (a < 8)] 

還要注意,一些運營商的表現有點不同的numpy的陣列,他們會比標準Python對象。您需要充分利用這一點來了解它,或閱讀相關文檔。例如:

>>> a > 3 
array([False, False, False, False, True, True, True, True, True, True], dtype=bool) 

因此,這將評估數組中的每個項是否大於3,並返回一個布爾值數組。

相關問題