Qual è il modo più pulito per aggiungere un campo a una matrice numpy strutturata? Può essere fatto in modo distruttivo oppure è necessario creare un nuovo array e copiare i campi esistenti? Il contenuto di ogni campo è memorizzato in modo contiguo nella memoria in modo che tale copia possa essere eseguita in modo efficiente?Aggiunta di un campo a una matrice numpy strutturata
20
A
risposta
19
Se si utilizza numpy 1.3, sono disponibili anche numpy.lib.recfunctions.append_fields().
Per molte installazioni, è necessario il numero import numpy.lib.recfunctions
per accedere a questo. import numpy
non consente di vedere numpy.lib.recfunctions
6
import numpy
def add_field(a, descr):
"""Return a new array that is like "a", but has additional fields.
Arguments:
a -- a structured numpy array
descr -- a numpy type description of the new fields
The contents of "a" are copied over to the appropriate fields in
the new array, whereas the new fields are uninitialized. The
arguments are not modified.
>>> sa = numpy.array([(1, 'Foo'), (2, 'Bar')], \
dtype=[('id', int), ('name', 'S3')])
>>> sa.dtype.descr == numpy.dtype([('id', int), ('name', 'S3')])
True
>>> sb = add_field(sa, [('score', float)])
>>> sb.dtype.descr == numpy.dtype([('id', int), ('name', 'S3'), \
('score', float)])
True
>>> numpy.all(sa['id'] == sb['id'])
True
>>> numpy.all(sa['name'] == sb['name'])
True
"""
if a.dtype.fields is None:
raise ValueError, "`A' must be a structured numpy array"
b = numpy.empty(a.shape, dtype=a.dtype.descr + descr)
for name in a.dtype.names:
b[name] = a[name]
return b
Problemi correlati
- 1. Aggiunta di una matrice a un grafico?
- 2. Aggiunta di una matrice 1-D a una matrice 3D in Numpy
- 3. Aggiunta di una matrice molto ripetitiva a una sparsa in numpy/scipy?
- 4. conversione di un dizionario 2d a una matrice NumPy
- 5. Aggiunta di un campo puntatore a una sottoclasse di PFUser
- 6. Aggiunta di una riga a una ripetizione numpy
- 7. aggiunta di una matrice all'oggetto
- 8. Come restituire una vista di diverse colonne in NumPy strutturata gamma
- 9. python3-numpy: aggiunta a un file con numpy savetxt
- 10. Aggiunta a una matrice durante l'iterazione
- 11. 3d matrice Numpy a 2d
- 12. Aggiunta di record a una serie record di NumPy
- 13. Ordina una matrice NumPy come un tavolo
- 14. Reshape una matrice in NumPy
- 15. Aggiunta di intestazioni di righe/colonne a matrici Numpy
- 16. Come creare una matrice di record numpy?
- 17. Aggiunta di un campo a un modello di Django esistente
- 18. aggiunta di lista e il numero NumPy
- 19. Indicizzazione di una matrice numpy con un elenco di tuple
- 20. rpy2: Conversione di un data.frame in una matrice numpy
- 21. Aggiunta di campo personalizzato a Ubercart Fattura
- 22. modo ottimale da aggiungere a matrice NumPy
- 23. Python: creazione di un istogramma 2D da una matrice numpy
- 24. Come "incorporare" una piccola matrice numpy in un blocco predefinito di un grande array numpy?
- 25. Matrice di oggetti con numpy
- 26. aggiunta di array numpy di forme diverse
- 27. Ridimensionamento e si estende una matrice NumPy
- 28. ricampionare matrice NumPy
- 29. Calcolando la curtosi da una matrice numpy?
- 30. Matrice numpy di matrici casuali
Può essere modificato per evitare la duplicazione della memoria? (vedi [questa domanda] (http://stackoverflow.com/q/39965994/974555)) – gerrit