¿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
¿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
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.
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.
@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