numpy模块数组与列表的比较

时间:2014-09-02 12:05:22

标签: python numpy

我试图将numpy数组与列表进行比较.... 因为我是python的新手,我不知道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()

任何人请帮助我为什么会收到价值错误

2 个答案:

答案 0 :(得分: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 * - 这意味着我不会覆盖,例如带有all版本的内置numpy

答案 1 :(得分:0)

您可以使用numpy.array_equal(a1, a2)来比较两个numpy数组!

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

样本:

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