【问题标题】:Difference between a numpy array and a multidimensional list in Python?Python中numpy数组和多维列表的区别?
【发布时间】:2013-09-25 07:46:38
【问题描述】:

仅简要查看了 numpy 数组后,我不明白它们与普通 Python 列表有何不同。有人能解释一下区别吗?为什么我会使用 numpy 数组而不是列表?

【问题讨论】:

标签: python arrays list numpy multidimensional-array


【解决方案1】:

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 数据集的最大值表示为列表的列表;在其上调用max 将按字典顺序比较列表并返回一个列表。列表适用于对象的同质序列,但如果你在做数学,你想要 numpy,你想要 ndarrays。

【讨论】:

  • 此外,列表列表可以存储参差不齐的数据(不同长度的列表)。数组是矩形的。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-19
    • 2018-06-15
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    相关资源
    最近更新 更多