2014-01-29 58 views
0

我有一些numpy arrays的麻煩,我不知道它是我的電腦(我有一些問題)或其他。 在那一刻,我介紹以下我這得到意想不到的結果:numpy數組中的最大和最小函數的意外結果

import numpy as np 
names=np.array(['jungle', 'mountain', 'sea', 'lake', 'forest', 'desert', 'house', 
'city', 'mountain'], dtype='<U20') 
max(names) 
'sea' 
min(names) 
'city' 

它應該是「山」的最大和「海」的最低 任何人都可以複製嗎?或者,它是我的電腦:(

+0

注意,它按字母順序現在排序它(用小寫字母大寫之前得到排序)你可能知道,但它不會傷害明確表示 –

+0

@ CodyPiersall,我不知道。謝謝 – Llopis

回答

1

字符串由每個字母的代碼點相比(從第一個字母,直到有差異):

>>> "AAAAA" < "B" 
True 
>>> "a" > "A" 
True 

如果你想通過長度,而不是比較區分大小寫「辭書」命令,使用key=len作爲第二個參數:

max(names, key=len) 
+0

哦,所以它不檢測自動,這是一個字符串改變來衡量的長度。有關於此的任何文檔?在http://docs.python.org/3/library/functions.html#max我找到了關鍵參數,但我不知道它是如何工作的。 (我現在不能標記我以後會這樣做的問題) – Llopis

+1

@Llopis:所有迭代器(和字符串都是迭代器)都是按元素進行比較的(除非您通過提供'key'參數來覆蓋它)。由於字符串的每個元素都是一個字符,因此字符串會逐個字符進行比較,並將它們的代碼點值進行比較。 –