Объекты выстраивают с numpy

там какой-либо путь состоит в том, чтобы создать объектную форму какой-либо класс в массиве numpy?. Что-то как:

a = zeros(4)

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

Спасибо

10
задан Mike Graham 21 April 2010 в 04:44
поделиться

2 ответа

Да, вы можете сделать это:

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

Здесь a.dtype равно dtype ('object') .

В качестве альтернативы, если вам действительно нужно зарезервировать память для вашего массива, а затем построить его поэлементно, вы можете сделать:

a = numpy.empty(shape=(4,), dtype=object)
a[0] = Register()  # etc.
15
ответ дан 3 December 2019 в 19:32
поделиться

Элементы в numpy массивы статически типизированы, и когда вы вызываете нулей , вы создаете массив с плавающей запятой. Для хранения произвольных объектов Python используйте код вроде

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

, который создает массив с dtype = object , который вы также можете указать вручную.

Подумайте, действительно ли вам нужен numpy в этом случае. Я не знаю, насколько этот пример близок к вашему варианту использования, но часто массив объектов dtype, особенно одномерный, работает не хуже, чем список.

5
ответ дан 3 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: