2011-03-13 21 views
12

Sé que ya había una pregunta sobre este tema (forma más limpia de agregar un campo a una matriz numpy estructurada), verAdición de un campo a una matriz numpy estructurada (2)

Adding a field to a structured numpy array

pero tiene alguna pregunta sobre la respuesta dada allí ...

Si está utilizando numpy 1.3, también hay numpy.lib.recfunctions.append_fields()

Todavía tengo numpy 1.3, pero no reconoce esta función, y tampoco encontré nada al respecto en la documentación de numpy. ¿Qué pasó con la función? ¿Hay alguna otra función que pueda hacer lo mismo?

Respuesta

2

En cuanto a la documentación de las recfunctions, aquí está: http://pyopengl.sourceforge.net/pydoc/numpy.lib.recfunctions.html

Es posible que también quiera leer esta conversación: http://comments.gmane.org/gmane.comp.python.numeric.general/39537

Si no puede resolverlo después de leer esos, a continuación, facilite algunos ejemplos de código (por ejemplo, importó numpy.lib.recfunctions?) y un mensaje de error o resultado no deseado, por lo que podemos determinar cómo solucionarlo.

+1

¡Gracias! Pensé que era estándar en numpy, así que intenté escribir 'np.lib.recfunctions.append_fields()' (después de importar numpy como np off course), pero no importé 'numpy.lib.recfunctions' por separado. Entonces es por eso que no conocía la función. Pero aún así, no se menciona en la documentación de Numpy, y eso no hace que sea más fácil encontrarlo. ¿Sabes por qué no está incluido? – joris

+0

No hay problema. Me alegro de que haya funcionado.No estoy seguro de por qué no incluyeron esto en la documentación (aunque no estoy familiarizado con sus políticas de documentación, por lo que es posible que desee preguntarle a uno de los desarrolladores del proyecto si está realmente interesado, o si cree que es una documentación). error) –

11

http://projects.scipy.org/numpy/browser/branches/1.3.x/numpy/lib/recfunctions.py?rev=8229

Qué te importan?

from numpy.lib import recfunctions 

recfunctions.append_field(*your_args) 

parece que todo está funcionando:

Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) 
[GCC 4.4.5] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import numpy 
>>> numpy.__version__ 
'1.3.0' 
>>> from numpy.lib.recfunctions import append_fields 
>>> append_fields 
<function append_fields at 0x9e3e80c> 
>>> 
+0

de hecho, no importé ... Ver otra respuesta. – joris

+1

Pegué esto, también. 'import numpy' y luego usando' numpy.lib.recfunctions.append_fields' no funcionó. Uno necesita 'importar numpy.lib.recfunctions' o algo como @DTing recomienda. No estoy seguro de por qué las recfunciones no se reconocen como resultado de 'import numpy' ... – Roland

7

Aquí está un ejemplo concreto cómo utilizar append_fields(..) (la verdad sobre la base de las otras respuestas aquí):

import numpy as np 
x = np.array(np.arange(0,10), dtype = [('x', float)]) 
y = np.array(np.arange(10,20), dtype = [('y', float)]) 

from numpy.lib.recfunctions import append_fields 

z = append_fields(x, 'y', y) 

donde

z.dtype.names 

dará

('x', 'y') 

nota que y en también puede ser 'normal' ndarray sin nombres de columna:

y = np.arange(10,20) 

o puede cambiar el nombre de la columna y a otra cosa (incluso si y es una matriz estructurada con nombres de columna):

z = append_fields(x, 'p', y) 

(probado en nump y 1.6.1)

Cuestiones relacionadas