2016-02-12 45 views
0

我不明白numpy數組的下列行爲。給出下面的陣列F:Python:numpy dtype U32 - 簡單的if-else語句

array([u'1.8', u'1.8', u'2.4', u'2.2', u'2.0', u'2.1', u'2.8', u'3.2', 
     u'3.3', u'3.4', u'2.8'], dtype='<U32') 

for a in f: 
    if a > 2.2: 
     print "greater" 
    else: 
     print "smaller" 

結果總是更大。

+0

爲什麼你的數組包含''''''而不是''數字'''''''''' – MSeifert

回答

1

這是因爲數組中的值是unicode字符串,而不是整數。在python中,比較時,數字類型總是比「非數字類型」更「大」。有關更深入的解釋,請參閱https://stackoverflow.com/a/3270689/5919154

要獲得您想要的功能,您需要將字符串轉換爲數字。