2010-04-20 23 views
7

¿hay alguna manera de crear un objeto de cualquier clase dentro de una matriz numpy ?. Algo así como:matriz de objetos con numpy

a = zeros(4) 

for i in range(4): 
    a[i]=Register() 

Gracias

Respuesta

11

Sí, usted puede hacer esto:

a = numpy.array([Register() for _ in range(4)]) 

Aquí, a.dtype es dtype('object').

Alternativamente, si usted realmente necesita para reservar memoria para la matriz y luego construirlo elemento por elemento, que puede hacer:

a = numpy.empty(shape=(4,), dtype=object) 
a[0] = Register() # etc. 
+0

@Mike: gracias por detectar el error tipográfico en la primera solución; lo que quise decir fue, por supuesto, lo que pones en tu solución. Había olvidado construir la lista primero; ahora está corregido Para la segunda solución, cambié a numpy.empty. – EOL

5

Los elementos de las matrices numpy se escriben de forma estática, y cuando se llama zeros se hacer una serie de flotadores. Para almacenar los objetos de Python arbitrarias, utilice un código como

numpy.array([Register() for i in xrange(4)]) 

que hace un arreglo con dtype=object, que también se puede especificar manualmente.

Considere si realmente desea numpy en este caso. No sé qué tan cerca está este ejemplo de su caso de uso, pero a menudo una matriz numpy de objeto dtype, especialmente uno unidimensional, funcionaría al menos tan bien como una lista.

Cuestiones relacionadas