NumPy数组和原生Python Array(数组)的区别
NumPy数组和原生Python Array(数组)之间有几个重要的区别:
- NumPy 数组在创建时具有固定的大小,与Python的原生数组对象(可以动态增长)不同。更改ndarray的大小将创建一个新数组并删除原来的数组。
- NumPy 数组中的元素都需要具有相同的数据类型,因此在内存中的大小相同。 例外情况:Python的原生数组里包含了NumPy的对象的时候,这种情况下就允许不同大小元素的数组。
- NumPy 数组有助于对大量数据进行高级数学和其他类型的操作。通常,这些操作的执行效率更高,比使用Python原生数组的代码更少。
- 越来越多的基于Python的科学和数学软件包使用NumPy数组; 虽然这些工具通常都支持Python的原生数组作为参数,但它们在处理之前会还是会将输入的数组转换为NumPy的数组,而且也通常输出为NumPy数组。换句话说,为了高效地使用当今科学/数学基于Python的工具(大部分的科学计算工具),你只知道如何使用Python的原生数组类型是不够的 - 还需要知道如何使用 NumPy 数组。
如何使两个长度相同的列表里面的相同索引的数值相乘并输出到一个新列表:
Python列表的方式:
a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
c = []
for i in range(len(a)):
c.append(a[i]*b[i])
复制代码
如果这个列表时数以百万的数据,循环迭代的时间将会是很长的。Numpy是怎样的呢:
c = a * b
复制代码
这样Numpy的使用和代码实现更为简单。
为什么Numpy那么快?
矢量化和广播.
矢量化
代码中没有任何显式的循环,索引
复制代码
传播:隐式逐元素行为