python - index - Numpy-array vs asarray
La definición de asarray
es:
def asarray(a, dtype=None, order=None):
return array(a, dtype, copy=False, order=order)
Entonces es como una array
, excepto que tiene menos opciones, y copy=False
. array
tiene copy=True
por defecto.
La principal diferencia es que la array
(de forma predeterminada) hará una copia del objeto, mientras que la asarray
no lo hará a menos que sea necesario.
La diferencia se puede demostrar con este ejemplo:
generar una matriz
>>> A = numpy.matrix(np.ones((3,3))) >>> A matrix([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]])
use
numpy.array
para modificarA
No funciona porque estás modificando una copia>>> numpy.array(A)[2]=2 >>> A matrix([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]])
use
numpy.asarray
para modificarA
Funcionó porque estás modificando aA
>>> numpy.asarray(A)[2]=2 >>> A matrix([[ 1., 1., 1.], [ 1., 1., 1.], [ 2., 2., 2.]])
¡Espero que esto ayude!
Las diferencias se mencionan con bastante claridad en la documentación de array() y asarray() . Las diferencias se encuentran en la lista de argumentos y, por lo tanto, la acción de la función depende de esos parámetros.
Las definiciones de función son:
numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
y
numpy.asarray(a, dtype=None, order=None)
Los siguientes argumentos son los que se pueden pasar a la array
y no al asarray
como se menciona en la documentación:
copy: bool, opcional Si es verdadero (predeterminado), entonces el objeto se copia . De lo contrario, solo se realizará una copia si
__array__
devuelve una copia, si obj es una secuencia anidada, o si se necesita una copia para satisfacer cualquiera de los otros requisitos (dtype, order, etc.).subok: bool, opcional Si es verdadero, las subclases se pasarán , de lo contrario la matriz devuelta se forzará para ser una matriz de clase base (valor predeterminado).
ndmin: int, opcional Especifica el número mínimo de dimensiones que debería tener la matriz resultante . Se agregará una forma predeterminada a las formas según sea necesario para cumplir con este requisito.