Czy istnieje sposób utworzenia obiektu z dowolnej klasy wewnątrz tablicy numpy ?. Coś jak:Tablica obiektów z numpy
a = zeros(4)
for i in range(4):
a[i]=Register()
Dzięki
Czy istnieje sposób utworzenia obiektu z dowolnej klasy wewnątrz tablicy numpy ?. Coś jak:Tablica obiektów z numpy
a = zeros(4)
for i in range(4):
a[i]=Register()
Dzięki
Tak, można to zrobić:
a = numpy.array([Register() for _ in range(4)])
Tutaj a.dtype
jest dtype('object')
.
Ewentualnie, jeśli naprawdę trzeba zarezerwować pamięć dla tablicy i następnie zbudować element po elemencie, można zrobić:
a = numpy.empty(shape=(4,), dtype=object)
a[0] = Register() # etc.
Pozycje w numpy tablice są statycznie wpisane, a podczas rozmowy zeros
cię utworzyć tablicę wskaźników. Aby zapisać dowolne obiekty, należy użyć kodu podobnego
numpy.array([Register() for i in xrange(4)])
co sprawia tablicę z dtype=object
, który można również określić ręcznie.
Zastanów się, czy naprawdę chcesz numpy w tym przypadku. Nie wiem, jak bliski jest ten przykład dla twojego przypadku użycia, ale często zbiór obiektów typu dtype, szczególnie jednowymiarowy, działałby co najmniej tak dobrze, jak lista.
@Mike: dziękuję za zauważenie literówki w pierwszym rozwiązaniu; Chodzi mi o to, co oczywiście włożyłeś w swoje rozwiązanie. Zapomniałem najpierw zbudować listę; teraz jest poprawiony. Dla drugiego rozwiązania przełączyłem się na numpy.empty. – EOL