Python对象的numpy数组

6 投票
1 回答
9327 浏览
提问于 2025-04-16 18:24

从什么时候开始,numpy就允许你定义一个包含Python对象的数组了?用numpy创建对象数组

这些数组和Python列表之间有根本性的区别吗?

这些数组和Python元组有什么区别呢?

我想在一个包含Python对象的数组上使用一些方便的numpy函数,比如掩码和逐元素操作,这样可以帮助我进行分析,但我担心使用一个找不到任何文档支持的功能。关于这个“对象”数据类型有没有相关的文档呢?

这个功能是为了将numpy合并到标准库中而添加的吗?

1 个回答

9

最根本的区别在于,Numpy 的 array 是固定大小的,而 Python 的 list 是一种 动态数组

>>> class Foo:
...  pass
... 
>>> x = numpy.array([Foo(), Foo()])
>>> x.append(Foo())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'append'

(你可以通过 numpy.concatenate 来解决这个问题,但 Numpy 数组并不是用来完全替代 list 的。)

关于 object 类型的数组有很好的 文档,但要注意,有时候你需要传入 dtype=object

>>> numpy.array(['hello', 'world!'])
array(['hello', 'world!'], 
      dtype='|S6')
>>> numpy.array(['hello', 'world!'], dtype=object)
array(['hello', 'world!'], dtype=object)

撰写回答