там какой-либо путь состоит в том, чтобы создать объектную форму какой-либо класс в массиве numpy?. Что-то как:
a = zeros(4)
for i in range(4):
a[i]=Register()
Спасибо
Да, вы можете сделать это:
a = numpy.array([Register() for _ in range(4)])
Здесь a.dtype
равно dtype ('object')
.
В качестве альтернативы, если вам действительно нужно зарезервировать память для вашего массива, а затем построить его поэлементно, вы можете сделать:
a = numpy.empty(shape=(4,), dtype=object)
a[0] = Register() # etc.
Элементы в numpy массивы статически типизированы, и когда вы вызываете нулей
, вы создаете массив с плавающей запятой. Для хранения произвольных объектов Python используйте код вроде
numpy.array([Register() for i in xrange(4)])
, который создает массив с dtype = object
, который вы также можете указать вручную.
Подумайте, действительно ли вам нужен numpy в этом случае. Я не знаю, насколько этот пример близок к вашему варианту использования, но часто массив объектов dtype, особенно одномерный, работает не хуже, чем список.