使用numpy的对象数组

12 投票
2 回答
14883 浏览
提问于 2025-04-15 21:49

有没有办法在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.

撰写回答