zeros index empty create array python arrays numpy

python - index - Numpy-array vs asarray



numpy array size (3)

¿Cuál es la diferencia entre las funciones de array() de Numpy array() y asarray() ? ¿Cuándo deberías usar uno en lugar de otro? Parecen generar resultados idénticos para todas las entradas que se me ocurren.


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:

  1. generar una matriz

    >>> A = numpy.matrix(np.ones((3,3))) >>> A matrix([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]])

  2. use numpy.array para modificar A No funciona porque estás modificando una copia

    >>> numpy.array(A)[2]=2 >>> A matrix([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]])

  3. use numpy.asarray para modificar A Funcionó porque estás modificando a A

    >>> 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.