Genero un elenco di matrici numpy unidimensionali in un ciclo e successivamente converto questo elenco in un array 2p numpy. Avrei preassegnato un array 2d numpy se conoscessi il numero di elementi prima del tempo, ma non lo faccio, quindi metto tutto in una lista.Modo Pythonic per creare una matrice numpy da un elenco di array numpy
Il mock up è qui sotto:
>>> list_of_arrays = map(lambda x: x*ones(2), range(5))
>>> list_of_arrays
[array([ 0., 0.]), array([ 1., 1.]), array([ 2., 2.]), array([ 3., 3.]), array([ 4., 4.])]
>>> arr = array(list_of_arrays)
>>> arr
array([[ 0., 0.],
[ 1., 1.],
[ 2., 2.],
[ 3., 3.],
[ 4., 4.]])
La mia domanda è la seguente:
c'è un modo migliore (performancewise) per andare circa il compito di raccogliere dati numerici sequenziali (nel mio caso numpy array) che metterli in una lista e quindi creare un numpy.array (sto creando un nuovo obj e copiando i dati)? Esiste una struttura di dati di matrice "espandibile" disponibile in un modulo ben testato?
Una dimensione tipica della mia matrice 2d sarebbe tra 100x10 e 5000x10 galleggia
EDIT: In questo esempio, sto usando la mappa, ma nella mia effettiva applicazione ho un ciclo for
@Alok --- grazie per la risposta premurosa . I tempi nella risposta di ~ unubuntu mostrano una preoccupazione circa il 5% di efficienza. Questo è quasi certamente un errore finché non arrivi al punto che devi assolutamente avere quel 5%. – telliott99