具有numpy的对象数组

时间:2010-04-20 10:05:11

标签: python arrays numpy

有没有办法在numpy数组中的任何类中创建一个对象?类似的东西:

a = zeros(4)

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

由于

2 个答案:

答案 0 :(得分:13)

是的,你可以这样做:

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

此处a.dtypedtype('object')

或者,如果你真的需要为数组保留内存然后逐个元素地构建它,你可以这样做:

a = numpy.empty(shape=(4,), dtype=object)
a[0] = Register()  # etc.

答案 1 :(得分:5)

numpy数组中的项目是静态类型的,当你调用zeros时,你会创建一个浮点数组。要存储任意Python对象,请使用

之类的代码
numpy.array([Register() for i in xrange(4)])

创建一个带dtype=object的数组,您也可以手动指定。

考虑在这种情况下你是否真的想要numpy。我不知道这个例子与你的用例有多接近,但是通常一个ntype对象的numpy数组,特别是一维对象,至少和列表一样好。