2014-09-02 4 views
0

Я пытаюсь сравнить Numpy массив со списком .... Поскольку я новичок в Python, я не знаю, о Numpy массиве Я хочу знать, применение Numpy массива Пожалуйста, помогите в понимании массива numpy.Comparision из 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 * - это значит, что я не отменяют, например, встроенный all с версией numpy.

+0

Спасибо, это помогло мне много – shrum

0

Вы можете использовать numpy.array_equal(a1, a2) для сравнения буксира numpy массив!

Истинно, если два массива имеют одинаковую форму и элементы, False в противном случае.

DEMO:

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

Благодарим Вас за Anser – shrum

+0

хорошо ком! так что не забывайте голосовать!;) – Kasramvd

Смежные вопросы