2014-09-02 114 views
0

我想比较numpy数组与列表.... 因为我是新来的python,我不知道numpy数组 我想知道numpy数组的应用 请帮助理解numpy数组。numpy模块阵列与列表比较

>>> from numpy import * 
>>> res1 = [] 
>>> res2 = array([]) 
>>> if res1 == res2: 
... print 'hi' 
... else: 
... print 'bye' 
... 
bye 

>>> res1 = [1] 
>>> res2 = array([1]) 
>>> if res1 == res2: 
... print 'hi' 
... else: 
... print 'bye' 
... 
hi 
>>> res1 = [1,2] 
>>> res2 = array([1, 2]) 
>>> if res1 == res2: 
... print 'hi' 
... else: 
... print 'bye' 
... 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 

中的任何一个,请帮助为什么我收到值误差

回答

0

比较res1 == res2创建布尔值的新阵列,它代表的名单和数组内容元素之比较:

>>> res1 == res2 
array([ True, True], dtype=bool) 

由于错误消息告诉您,您不能直接为数组指定真值,因此您需要测试all项是否为True

>>> np.all(res1 == res2) 
True 

这仅是因为你的清单,排列形状相同:

>>> a = np.array([1, 2, 3]) 
>>> b = [3, 2] 
>>> a == b 
False 

请注意,我用import numpy as np而非from numpy import * - 这意味着我并不如覆盖内置allnumpy的版本。

+0

谢谢你,它帮了我很多 – shrum 2014-09-02 12:37:50

0

您可以使用numpy.array_equal(a1, a2)进行比较拖拽numpy阵列!

如果两个数组具有相同的形状和元素,则为true,否则为False。

DEMO:

>>> np.array_equal(np.array([1, 2]), np.array([1, 2])) 
True 
>>> np.array_equal([1, 2], [1, 2, 3]) 
False 
+0

谢谢您的雁 – shrum 2014-09-02 12:39:52

+0

以及COM!所以不要忘记投票!) – Kasramvd 2014-09-02 12:53:51