2014-01-29 56 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'参数来覆盖它)。由于字符串的每个元素都是一个字符,因此字符串会逐个字符进行比较,并将它们的代码点值进行比较。 –