Массив объектов с NumPy - PullRequest
       16

Массив объектов с NumPy

9 голосов
/ 20 апреля 2010

Есть ли способ создать объект из любого класса внутри массива numpy? Что-то вроде:

a = zeros(4)

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

Спасибо

Ответы [ 2 ]

13 голосов
/ 20 апреля 2010

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

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

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

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

a = numpy.empty(shape=(4,), dtype=object)
a[0] = Register()  # etc.
5 голосов
/ 20 апреля 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...