[英]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.