NumPy数组和Python列表有什么区别?

13

为什么我们在Python中使用NumPy数组而不是列表?它们之间的主要区别是什么?


5
"array" 是什么意思?你是真的想要使用 arrays 这个词吗,还是原本想用 list (例如 [1, 2, 3] 是 list 而不是 array)?请说明。 - Antti Haapala -- Слава Україні
3
如果您确实是指数组,请明确说明。 - jonrsharpe
1个回答

11

Numpy数组是一种有类型的数组,内存中的数组存储着同质且密集排列的数字。

Python列表是一个异构列表,内存中的列表存储着对对象的引用而不是数字本身。

这意味着每次代码需要访问数字时,Python列表需要对指针进行解引用。而Numpy数组可以直接通过Numpy向量操作进行处理,使得这些向量操作比使用列表编码的任何操作都要快得多。

Numpy数组的缺点是,如果需要访问数组中的单个项目,Numpy将需要将数字打包/拆包成Python数字对象,这可能会在某些情况下变慢;并且它不能容纳异构数据。


6
这适用于列表,但不适用于数组,后者也存在于标准库中。 - jonrsharpe
2
@jonrsharpe,你是说普通的Python数组和Numpy数组本质上是相等的吗?请详细描述一下你的评论。谢谢。 - Muhammad Muzammil
@MuhammadMuzammil 我的意思是,listarray不是同一种东西;对于“简单的Python数组”,我不确定OP指的是哪一个。 - jonrsharpe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接