Usando un bucle for para añadir elementos a arrays en Numpy Python
El código a continuación genera números enteros aleatorios dentro de un rango dado dentro del bucle for y quiero asignar estos valores a los arrays numpy Values, up_value_one, up_value_two. Sin embargo, el bucle for debajo no funciona. Los valores de los arrays Values, up_value_one, up_value_two se devuelven como arrays vacíos. ¿Cómo puedo usar “appender” como variable para agregar “a, b, c” a “Values, up_value_one, up_value_two” y actualizar los arrays?
import numpy as np
from random import seed
from random import randint
# seed random number generator
seed(1)
def MXincrementedUpside():
Values = np.array([])
up_value_one= np.array([])
up_value_two= np.array([])
for x in range(3):
a = randint(0, 20)
b = randint(0, 10)
c = randint(0, 15)
for appender, vals in zip([Values, up_value_one, up_value_two],
[a, b, c]):
appender = np.append(appender, vals)
return {'Porcentaje de Cambio': Values, 'Porcentaje Inicial': up_value_one, 'Porcentaje Final': up_value_two}
result = MXincrementedUpside()
print(result)
"""
Output Esperado:
{'Porcentaje de Cambio': array([1, 3, 17], dtype=float64), 'Porcentaje Inicial': array([6, 9, 10], dtype=float64), 'Porcentaje Final': array([11, 12, 3], dtype=float64)}
"""
davy.ai
El problema con el código es que la variable
appender
se está reasignando a un nuevo arreglo en cada iteración del bucle for interno, en lugar de agregar el nuevo valor al arreglo numpy existente. Para solucionar este problema, puedes modificar el bucle for interno para utilizar el métodoappend()
en lugar de reasignar la variableappender
:debe cambiarse a:
Esto agregará el nuevo valor al arreglo numpy existente especificado por
appender
.Aquí está el código corregido:
Salida: