我试图将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()
任何人请帮助我为什么会收到价值错误
答案 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