Utilizando matrices Python estándar, puedo hacer lo siguiente:
arr = []
arr.append([1,2,3])
arr.append([4,5,6])
# arr is now [[1,2,3],[4,5,6]]
Sin embargo, no puedo hacer lo mismo en numpy. Por ejemplo:
arr = np.array([])
arr = np.append(arr, np.array([1,2,3]))
arr = np.append(arr, np.array([4,5,6]))
# arr is now [1,2,3,4,5,6]
También investigué vstack
, pero cuando lo uso vstack
en una matriz vacía, obtengo:
ValueError: all the input array dimensions except for the concatenation axis must match exactly
Entonces, ¿cómo agrego una nueva fila a una matriz vacía en numpy?
Respuestas:
La forma de "iniciar" la matriz que desea es:
Que es una matriz vacía pero tiene la dimensionalidad adecuada.
Luego asegúrese de agregar a lo largo del eje 0:
Pero @jonrsharpe tiene razón. De hecho, si va a agregar en un bucle, sería mucho más rápido agregar a una lista como en su primer ejemplo, luego convertir a una matriz numpy al final, ya que realmente no está usando numpy como previsto durante el ciclo:
La forma numpythonic de hacerlo depende de su aplicación, pero sería más como:
fuente
a = a[:N]
Aunque creo firmemente que debe encontrar una manera de vectorizarlo (publique una nueva pregunta con sus detalles si necesita ayuda) o simplemente use listas hasta que termine el ciclo.Aquí está mi solución:
fuente
En este caso, es posible que desee utilizar las funciones np.hstack y np.vstack
También puede usar la función np.concatenate.
Salud
fuente
usando una definición de dtype personalizada, lo que funcionó para mí fue:
fuente
En caso de agregar nuevas filas para la matriz en bucle, asigne la matriz directamente por primera vez en bucle en lugar de inicializar una matriz vacía.
Esto es principalmente útil cuando se desconoce la forma de la matriz
fuente
Quiero hacer un bucle for, pero con el método askewchan no funciona bien, así que lo he modificado.
fuente