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

Sco*_*ler 1 python arrays numpy list multidimensional-array

在简单地查看numpy数组之后,我不明白它们与普通Python列表的区别.有人可以解释这个区别,为什么我会使用numpy数组而不是列表?

use*_*ica 5

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
Run Code Online (Sandbox Code Playgroud)

相比之下,列表基本上面向一维数据.您可以拥有列表列表,但这不是2D列表.您不能方便地获取表示为列表列表的2D数据集的最大值; 调用max它将按字典顺序比较列表并返回列表.列表适用于同类对象序列,但是如果你正在进行数学运算,那么你需要numpy,而你需要ndarrays.

  • 此外,列表列表可以存储不规则数据(不同长度的列表).数组是矩形的. (2认同)