Y at-il un moyen de créer un objet de n'importe quelle classe à l'intérieur d'un tableau numpy ?. Quelque chose comme:Tableau d'objets avec numpy
a = zeros(4)
for i in range(4):
a[i]=Register()
Merci
Y at-il un moyen de créer un objet de n'importe quelle classe à l'intérieur d'un tableau numpy ?. Quelque chose comme:Tableau d'objets avec numpy
a = zeros(4)
for i in range(4):
a[i]=Register()
Merci
Oui, vous pouvez le faire:
a = numpy.array([Register() for _ in range(4)])
Ici, a.dtype
est dtype('object')
.
Alternativement, si vous avez vraiment besoin de réserver de la mémoire pour votre tableau et ensuite construire élément par élément, vous pouvez faire:
a = numpy.empty(shape=(4,), dtype=object)
a[0] = Register() # etc.
Les éléments de tableaux numpy sont statiquement typés, et lorsque vous appelez zeros
vous faire un tableau de flottants. Pour stocker des objets Python arbitraires, utilisez le code comme
numpy.array([Register() for i in xrange(4)])
qui fait un tableau avec dtype=object
, que vous pouvez également spécifier manuellement.
Déterminez si vous voulez vraiment numpy dans ce cas. Je ne sais pas à quel point cet exemple est proche de votre cas d'utilisation, mais souvent un tableau numérique d'objets dtype, en particulier un objet unidimensionnel, fonctionnerait au moins aussi bien qu'une liste.
@Mike: merci de repérer la faute de frappe dans la première solution; ce que je voulais dire était bien sûr ce que vous avez mis dans votre solution. J'avais oublié de construire la liste en premier; c'est maintenant corrigé. Pour la deuxième solution, je suis passé à numpy.empty. – EOL