Cómo solucionarlo: el objeto ‘numpy.ndarray’ no tiene el atributo ‘agregar’

NumPy es una biblioteca para el lenguaje de programación Python, que agrega soporte para arreglos y arrays grandes y multidimensionales, junto con una gran colección de funciones matemáticas de alto nivel para operar en estos arreglos. Si le gustan los análisis, es posible que haya encontrado esta biblioteca en python. Al principio, algunas cosas pueden confundir a un programador al cambiar de las listas tradicionales de Python a las arrays NumPy. Uno de esos errores con los que nos podemos encontrar es “ AttributeError: el objeto ‘numpy.ndarray’ no tiene atributo ‘append’ ”. En este artículo, veamos por qué vemos este error y cómo solucionarlo.

Al agregar un elemento a una lista de python, utilizamos el método de adición de la lista. La sintaxis es bastante simple y cuando intentamos replicar lo mismo en una array NumPy, obtenemos el error mencionado anteriormente. Veámoslo con un ejemplo.

Ejemplo: código que representa el error

Python

# Append method on python lists
  
import numpy
print("-"*15, "Python List", "-"*15)
  
# Create a python list
pylist = [1, 2, 3, 4]
  
# View the data type of the list object
print("Data type of python list:", type(pylist))
  
# Add (append) an item to the python list
pylist.append(5)
  
# View the items in the list
print("After appending item 5 to the pylist:", pylist)
  
print("-"*15, "Numpy Array", "-"*15)
  
# Append method on numpy arrays
  
# Import the numpy library
  
# Create a numpy array
nplist = numpy.array([1, 2, 3, 4])
  
# View the data type of the numpy array
print("Data type of numpy array:", type(nplist))
  
# Add (append) an item to the numpy array
nplist.append(5)

Producción:

Error de adición numpy

En el resultado anterior, podemos ver que la lista de python tiene un tipo de datos de lista . Cuando realizamos la operación de agregar, el elemento, es decir, 5, se agrega al final de la lista ` pylist `. Si bien probamos el mismo método para la array NumPy, falla y arroja un error » AttributeError: el objeto ‘numpy.ndarray’ no tiene el atributo ‘append’ «. El resultado es bastante explicativo, la array NumPy tiene un tipo de numpy.ndarray que no tiene ningún método  append() .

Ahora, sabemos que el apéndice no es compatible con las arrays NumPy, entonces, ¿cómo lo usamos? En realidad, es un método de NumPy y no su array, entendámoslo a través del ejemplo que se muestra a continuación, donde realmente realizamos la operación de agregar en una lista numpy.

Sintaxis:

numpy.append(arr, valores, eje=Ninguno)

Parámetros:

  • arr: array numpy: la array a la que se agregan los valores como una copia de la misma.
  • valores: array numpy o valor: estos valores se agregan a una copia de arr. Debe tener la forma correcta (la misma forma que arr, excluyendo el eje). Si no se especifica el eje, los valores pueden tener cualquier forma y se aplanarán antes de su uso.
  • eje: int, opcional: el eje a lo largo del cual se agregan los valores. Si no se proporciona el eje, tanto arr como los valores se aplanan antes de su uso.

Ejemplo: código fijo 

Python

# Append method on numpy arrays
  
# Import the numpy library
import numpy
  
# Create a numpy array
nplist = numpy.array([1, 2, 3, 4])
  
# View the data type of the numpy array
print("Data type of numpy array:", type(nplist))
  
# View the items in the numpy array
print("Initial items in nplist:", nplist)
  
# Add (append) an item to the numpy array
nplist = numpy.append(nplist, 5)
  
# View the items in the numpy array
print("After appending item 5 to the nplist:", nplist)

Producción:

Numpy Agregar salida

Como en el resultado, podemos ver que inicialmente, la array NumPy tenía 4 elementos (1, 2, 3, 4). Después de agregar 5 a la lista, se refleja en la array NumPy. Esto es así porque aquí la función de agregar se usa en NumPy y no en el objeto de array NumPy ( numpy.ndarray ). 

Publicación traducida automáticamente

Artículo escrito por apathak092 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *