Modifique la array Numpy para almacenar una string de longitud arbitraria

NumPy se basa en (y es un sucesor) del exitoso objeto de array Numeric. Su objetivo es crear la piedra angular de un entorno útil para la computación científica. NumPy proporciona dos objetos fundamentales: un objeto de array N-dimensional (ndarray) y un objeto de función universal (ufunc).

El dtype de cualquier array numpy que contenga valores de string es la longitud máxima de cualquier string presente en la array. Una vez configurado, solo podrá almacenar una nueva string que no tenga una longitud superior a la longitud máxima en el momento de la creación. Si tratamos de reasignar algún otro valor de string que tenga una longitud mayor que la longitud máxima de los elementos existentes, simplemente descarta todos los valores más allá de la longitud máxima.

En esta publicación, discutiremos las formas en que podemos superar este problema y crear una array numpy de longitud arbitraria .

Primero visualicemos el problema con la creación de una array numpy de longitud arbitraria de tipo string.

# importing numpy as np
import numpy as np
  
# Create the numpy array
country = np.array(['USA', 'Japan', 'UK', '', 'India', 'China'])
  
# Print the array
print(country)

Producción :

Como podemos ver en la salida, la longitud máxima de cualquier elemento de longitud de string en la array dada es 5. Intentemos asignar un valor que tenga una mayor longitud en el lugar del valor faltante en la array.

# Assign 'New Zealand' at the place of missing value
country[country == ''] = 'New Zealand'
  
# Print the modified array
print(country)

Producción :

Como podemos ver en el resultado, se ha asignado ‘Nueva Z’ en lugar de ‘Nueva Zelanda’ debido a la limitación de la longitud. Ahora, veamos las formas en que podemos superar este problema.

Problema n. ° 1: cree una array numpy de longitud arbitraria.

Solución: al crear la array, asígnele el tipo de ‘objeto’. Esto le permite tener todos los comportamientos de la string de python.

# importing the numpy library as np
import numpy as np
  
# Create a numpy array
# set the dtype to object
country = np.array(['USA', 'Japan', 'UK', '', 'India', 'China'], dtype = 'object')
  
# Print the array
print(country)

Producción :

Ahora usaremos asignar un valor de longitud arbitraria en el lugar del valor faltante en la array dada.

# Assign 'New Zealand' to the missing value
country[country == ''] = 'New Zealand'
  
# Print the array
print(country)

Producción :

Como podemos ver en el resultado, hemos asignado con éxito una string de longitud arbitraria al objeto de array dado.

Problema n. ° 2: cree una array numpy de longitud arbitraria.

Solución: Usaremos la numpy.astype()función para cambiar el dtype del objeto de array dado.

# importing the numpy library as np
import numpy as np
  
# Create a numpy array
# Notice we have not set the dtype of the object
# this will lead to the length problem 
country = np.array(['USA', 'Japan', 'UK', '', 'India', 'China'])
  
# Print the array
print(country)

Producción :

Ahora cambiaremos el dtype del objeto de array dado usando numpy.astype()la función. Luego le asignaremos una string de longitud arbitraria.

# Change the dtype of the country
# object to 'U256'
country = country.astype('U256')
  
# Assign 'New Zealand' to the missing value
country[country == ''] = 'New Zealand'
  
# Print the array
print(country)

Producción :

Como podemos ver en el resultado, hemos asignado con éxito una string de longitud arbitraria al objeto de array dado.

Nota: La longitud máxima de la string que podemos asignar en este caso después de cambiar el dtype es 256.

Publicación traducida automáticamente

Artículo escrito por Shubham__Ranjan 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 *