Numpy 和 Python List 的差别
其实提到 Numpy,我建议你多做一些和 Python 原生 List 的对比, 因为它们从结构和形式上来说,是十分类似的。而且从一个你熟悉的 List 来类比学习 Numpy 也是一件简单的事情。
在这一节内容中,我们主要涉及到的功能有:
- Numpy Array
np.array()
Numpy Array¶
在 Numpy 中,我们会一直使用到它的一种 Array 数据。这个 Array 的格式和形态多种多样,我们会在后续的教程中更详细的介绍。 现在,你只需要懂得如何 import numpy
,并像下面这样定义一个 array
就好了。
List 和 Numpy array 共同点¶
了解 Python 原生 List 的朋友一定都知道,当你想要存储一些数据的时候, 你很可能想要用一个 list 来存储,并且可以按顺序提取出来。比如下面这样
存储和提取就是 List
的最基本用法和功能。而 Numpy Array
也能做这件事。
甚至对内部的一个值进行修改也是同样的逻辑。
所以这咋一看起来,Numpy Array
好像也没什么特别的呀,为什么这么多人都爱 Numpy 呢?
Numpy 的优势¶
Numpy的核心优势:运算快。用专业的语言描述的话,Numpy
喜欢用电脑内存中连续的一块物理地址存储数据,因为都是连号的嘛,找到前后的号,不用跑很远, 非常迅速。而 Python
的 List
并不是连续存储的,它的数据是分散在不同的物理空间,在批量计算的时候,连号的肯定比不连号的算起来更快。因为找他们的时间更少了。
而且 Numpy Array 存储的数据格式也有限制,尽量都是同一种数据格式,这样也有利于批量的数据计算。 所以只要是处理大规模数据的批量计算,Numpy
肯定会比 Python
的原生 List
要快。
上面的例子,如果你会 map
的话,即使我用 map
来代替 Python 的原生循环赋值。Numpy 还是要快一些
总结¶
Numpy Array 和 Python List 在很多使用场景上是可以互换的,不过在大数据处理的场景下,而且你的数据类型又高度统一, 那么 Numpy 绝对是你不二的人选,能提升的运算速度也是杠杠的~