使用numpy的对象数组
有没有办法在numpy数组里创建任何类的对象呢?就像这样:
a = zeros(4)
for i in range(4):
a[i]=Register()
谢谢
2 个回答
5
在numpy数组中,里面的元素是静态类型的。当你调用zeros
时,你创建的是一个浮点数的数组。如果你想存储任意的Python对象,可以使用下面的代码:
numpy.array([Register() for i in range(4)])
这段代码会创建一个dtype=object
的数组,你也可以手动指定这个类型。
在这种情况下,考虑一下你是否真的需要使用numpy。我不知道这个例子和你的实际情况有多接近,但通常来说,使用dtype为object的numpy数组,尤其是一维数组,效果往往和列表差不多。
18
是的,你可以这样做:
a = numpy.array([Register() for _ in range(4)])
在这里,a.dtype
的类型是 dtype('object')
。
另外,如果你确实需要为你的数组预留内存,然后再一个一个地添加元素,你可以这样做:
a = numpy.empty(shape=(4,), dtype=object)
a[0] = Register() # etc.