Estoy tratando de comparar numpy array con la lista ... Debido a que soy nuevo en python, no sé acerca de numpy array. Quiero saber la aplicación de numpy array. Por favor, ayúdenme a comprender numpy array.

>>> 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()

Cualquiera por favor ayuda por qué recibo un error de valor

0
shrum 2 sep. 2014 a las 16:05

2 respuestas

La mejor respuesta

La comparación res1 == res2 crea una nueva matriz de booleanos, que representan una comparación de elementos de la lista y el contenido de la matriz:

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

Como le indica el mensaje de error, no puede asignar directamente un valor de verdad a una matriz, por lo que debe probar si los elementos all son True:

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

Esto solo sucede porque su lista y matriz tienen la misma forma:

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

Tenga en cuenta que he usado import numpy as np en lugar de from numpy import *; esto significa que no anulo p. Ej. la versión incorporada de all con numpy.

0
jonrsharpe 2 sep. 2014 a las 12:32

¡puede usar numpy.array_equal(a1, a2) para comparar la matriz de remolque numpy!

Verdadero si dos matrices tienen la misma forma y elementos, falso de lo contrario.

Demo:

>>> np.array_equal(np.array([1, 2]), np.array([1, 2]))
True
>>> np.array_equal([1, 2], [1, 2, 3])
False
0
Kasravnd 2 sep. 2014 a las 12:10