【问题标题】:NumPy's ndarrays vs Python's listsNumPy np 数组与 Python 列表
【发布时间】:2019-10-11 14:19:02
【问题描述】:

我是 Python 的初学者,最近了解了 NumPy 及其著名的ndarrays。起初,看了很多人夸他们(一些参考here,here,here),我想:

“好吧,如果 NumPy 的数组好得多,并且假设我并不真正关心在同一个列表/数组上具有异构数据类型,我为什么要使用 Python 的列表?”

但是,经过更深入的研究,我发现使用 ndarrays 也有不利的一面(一些参考文献here 和here)。我已经了解了使用这些数据结构的基本优缺点,但这一切对我来说似乎仍然很困惑。所以,我的问题是:作为 Python 的初学者,什么时候应该使用 NumPy 的数组,什么时候应该使用 Python 的列表?在给定情况下,我如何评估哪个选项是最好的?

有些人可能倾向于认为这篇文章是重复的——确实已经有很多“ndarrays vs lists”主题了。但是,我已经搜索了一段时间,但我的问题没有找到令人满意的答案。很多人都在谈论ndarrays和lists的好处,但是还不清楚,特别是像我这样的初学者,如何在它们之间进行选择。我应该在日常编码中使用 NumPy 数组并为特殊情况保存列表吗?还是我应该反其道而行之?谢谢!

注意:因为它可能与答案相关,所以我打算将 Python 主要用于机器学习。

【问题讨论】:

  • 列表是基本的 Python 结构,可用于多种角色。 numpy 主要是一个数字工具——矩阵、高维数组。它已扩展到使用pandas 的时间序列,以及使用sklearn 和tensorflow/keras 的机器学习,

标签: python arrays list numpy numpy-ndarray


【解决方案1】:

Python 列表更庞大。它们基本上是指针数组,比 numpy 的 ndarrays 占用更多的内存。因此,对于涉及矩阵和复杂计算的数学运算,ndarrays 是更好的选择。正因为如此,大多数数学运算都针对 numpy 进行了优化,ndarrays 还有更多数学上有用的函数。

不过,Python 列表要灵活得多。它们可以保存异构的任意数据,并且附加/删除非常有效。如果您想添加和删除许多不同的对象,Python 列表是您的最佳选择。

出于机器学习的目的,ndarrays 绝对是您的最佳选择。 TensorFlow 和 keras 这两个最流行的机器学习库更适合 numpy 的内存高效数组,因为它们处理大量的同质数据。

【讨论】:

    猜你喜欢
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 2022-01-25
    • 1970-01-01
    • 2020-09-06
    • 2017-12-23
    • 2019-06-16
    相关资源
    最近更新 更多