¿Cuál es la forma más limpia de agregar un campo a una matriz numpy estructurada? ¿Se puede hacer de manera destructiva, o es necesario crear una nueva matriz y copiar sobre los campos existentes? ¿Están los contenidos de cada campo almacenados contiguamente en la memoria para que dicha copia se pueda hacer de manera eficiente?Agregar un campo a una matriz numpy estructurada
20
A
Respuesta
19
Si está usando numpy 1.3, también hay numpy.lib.recfunctions.append_fields().
Para muchas instalaciones, necesitará import numpy.lib.recfunctions
para tener acceso a esto. import numpy
no permitirá que uno vea el 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
Cuestiones relacionadas
- 1. Adición de un campo a una matriz numpy estructurada (2)
- 2. Convertir una matriz numpy 2D en una matriz estructurada
- 3. NumPy: programación modificar dtype de una matriz estructurada
- 4. ¿Cómo enmascarar la matriz numpy estructurada en múltiples columnas?
- 5. numpy: aplicar argsort a una matriz
- 6. Agregar row a numpy recarray
- 7. ¿Sumar de manera eficiente una matriz numpy pequeña, transmitida a través de una matriz numpy descomunal?
- 8. ¿Agregar una matriz a un diagrama?
- 9. ¿Cómo "insertar" una pequeña matriz numpy en un bloque predefinido de una matriz numpy grande?
- 10. Python escritura una matriz numpy a un archivo CSV
- 11. ¿Cómo llamar a un elemento en una matriz numpy?
- 12. convertir un diccionario 2d a una matriz numpy
- 13. ¿Cómo convertir un conjunto de python a una matriz numpy?
- 14. interactuando sobre una matriz numpy
- 15. Cómo analizar una matriz numpy?
- 16. ¿Ver en una matriz numpy?
- 17. ¿Cómo agrego filas y columnas a una matriz NUMPY?
- 18. ¿Cómo creo una matriz numpy a partir de una cadena?
- 19. ¿Cómo convierto una matriz numpy a (y visualizo) una imagen?
- 20. Agregar un campo personalizado a Ubercart Factura
- 21. Suma una fila de una matriz NumPy
- 22. Manera pitónica de crear una matriz numpy a partir de una lista de matrices numpy
- 23. Numpy: ordenar una matriz multidimensional por una matriz multidimensional
- 24. Agregar un objeto a una matriz de una clase personalizada
- 25. Convertir una matriz 1D en una matriz 2D en numpy
- 26. Ordenar una matriz numpy como una mesa
- 27. Eliminar una columna para una matriz numpy
- 28. numpy matriz de conversión a pares
- 29. ¿Convertir lista en tupla a matriz numpy?
- 30. Numpy matriz simétrica 'inteligente'
¿Se puede modificar esto para evitar la duplicación de memoria? (vea [esta pregunta] (http://stackoverflow.com/q/39965994/974555)) – gerrit