Tenemos dos formas similares de convertir un ndarray en un arreglo 1D: Flatten() y Ravel()
import numpy as np a = np.array( [ (1,7,3,4),(3,2,4,1) ] ) #OUTPUT: print( a.flatten() ) # [ 1,7,3,4,3,2,4,1 ] print ( a.ravel() ) # [ 1,7,3,4,3,2,4,1 ]
Aquí surge la pregunta, ¿por qué hay dos funciones numpy para hacer la misma tarea?
Diferencias entre Flatten() y Ravel()
a.ravel() :
(i) Devuelve solo la referencia/vista de la array original
(ii) Si modifica la array, notará que el valor de la array original también cambia.
(iii) Ravel es más rápido que flatten() ya que no ocupa memoria.
(iv) Ravel es una función de nivel de biblioteca.
a.flatten() :
(i) Devuelve una copia de la array original
(ii) Si modifica cualquier valor de esta array, el valor de la array original no se ve afectado.
(iii) Flatten() es comparativamente más lento que ravel() ya que ocupa memoria.
(iv) Flatten es un método de un objeto ndarray.
Veamos la diferencia con este código.
# Python code to differentiate # between flatten and ravel in numpy import numpy as np # Create a numpy array a = np.array([(1,2,3,4),(3,1,4,2)]) # Let's print the array a print ("Original array:\n ") print(a) # To check the dimension of array (dimension =2) # ( and type is numpy.ndarray ) print ("Dimension of array-> " , (a.ndim)) print("\nOutput for RAVEL \n") # Convert nd array to 1D array b = a.ravel() # Ravel only passes a view of # original array to array 'b' print(b) b[0]=1000 print(b) # Note here that value of original # array 'a' at also a[0][0] becomes 1000 print(a) # Just to check the dimension i.e. 1 # (and type is same numpy.ndarray ) print ("Dimension of array->" ,(b.ndim)) print("\nOutput for FLATTEN \n") # Convert nd array to 1D array c = a.flatten() # Flatten passes copy of # original array to 'c' print(c) c[0]=0 print(c) # Note that by changing # value of c there is no # affect on value of original # array 'a' print(a) print ("Dimension of array-> " , (c.ndim))
OUTPUT: Original array: [[1 2 3 4] [3 1 4 2]] Dimension of array-> 2 Output for RAVEL [1 2 3 4 3 1 4 2] [1000 2 3 4 3 1 4 2] [[1000 2 3 4] [ 3 1 4 2]] Dimension of array-> 1 Output for FLATTEN [1000 2 3 4 3 1 4 2] [0 2 3 4 3 1 4 2] [[1000 2 3 4] [ 3 1 4 2]] Dimension of array-> 1
Este artículo es una contribución de SHAURYA UPPAL .
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA