繁体   English   中英

python中的numpy数组和多维列表之间的区别?

[英]Difference between a numpy array and a multidimensional list in Python?

仅简要查看了numpy数组后,我不了解它们与普通的Python列表有何不同。 有人可以解释差异,为什么我要使用numpy数组而不是列表?

NumPy数组是专门为处理多维数字数据而设计的,另外还支持任意对象的数组。 它们提供具有方便语法的快速矢量化操作。

>>> x = numpy.arange(4).reshape((2, 2))
>>> x
array([[0, 1],
       [2, 3]])
>>> x.T           # Transpose.
array([[0, 2],
       [1, 3]])
>>> x.max()
3
>>> x * 4
array([[ 0,  4],
       [ 8, 12]])
>>> x[:, 1]       # Slice to select the second column.
array([1, 3])
>>> x[:, 1] *= 2
>>> x
array([[0, 2],
       [2, 6]])
>>> timeit.timeit('x * 5',
...               setup='import numpy; x = numpy.arange(1000)',
...               number=100000)
0.4018515302670096
>>> timeit.timeit('[item*5 for item in x]',
...               setup='x = range(1000)',
...               number=100000)
8.542360042395984

相比之下,列表从根本上针对一维数据。 您可以有一个列表列表,但这不是2D列表。 您无法方便地获取以列表列表形式表示的2D数据集的最大值。 在其上调用max将按字典顺序比较列表并返回列表。 列表对于均匀的对象序列很有用,但是如果您正在做数学运算,则需要numpy,并且需要ndarrays。

Numpy是一个扩展,它要求其上的所有对象都是同一类型,在创建时就已定义。 它还提供了一组线性代数运算。 它更像是python处理数值计算的数学框架(矩阵,n个东西)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM