Python对象的numpy数组
从什么时候开始,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)