Python:列表和numpy对象数组之间的差异

Nei*_*l G 14 python numpy

什么是存储在Python对象的优点和缺点numpy.arraydtype='o'与使用list(或listlist等,在更高的维度)?

在这种情况下,numpy数组是否更有效?(似乎他们无法避免间接,但在多维情况下可能更有效.)

Jan*_*ila 9

切片与NumPy数组的工作方式不同.NumPy文档专门讨论了这个主题. 要突出一些要点:

  • NumPy切片可以切割多个维度
  • 由NumPy基本切片生成的所有数组始终是原始数组的视图,而列表切片是浅副本.
  • 您可以将标量指定到NumPy切片中.
  • 您可以list通过为切片指定不同长度的序列来插入和删除项目,而NumPy会引发错误.

演示:

>>> a = np.arange(4, dtype=object).reshape((2,2))
>>> a
array([[0, 1],
       [2, 3]], dtype=object)
>>> a[:,0]             #multidimensional slicing
array([0, 2], dtype=object)
>>> b = a[:,0]
>>> b[:] = True        #can assign scalar
>>> a                  #contents of a changed because b is a view to a
array([[True, 1],
       [True, 3]], dtype=object)    
Run Code Online (Sandbox Code Playgroud)

此外,NumPy数组通过支持它们的对象数组(例如fraction.Fraction)提供方便的数学运算.