numpy
numpy 介绍
NumPy(Numerical Python)是Python的一种开源的数值计算扩展库
这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多(该结构也可以用来表示矩阵),支持大量的维度数组与矩阵运算
- 一个强大的N维数组对象 ndarray
- 广播功能函数
- 整合 C/C++/Fortran 代码的工具
- 线性代数、傅里叶变换、随机数生成等功能
NumPy数组 和 原生Python Array(数组)之间有几个重要的区别
- NumPy 数组在创建时具有固定的大小,与Python的原生数组对象(可以动态增长)不同。更改ndarray的大小将创建一个新数组并删除原来的数组。
- NumPy 数组中的元素都需要具有相同的数据类型,因此在内存中的大小相同。 例外情况:Python的原生数组里包含了NumPy的对象的时候,这种情况下就允许不同大小元素的数组。
- NumPy 数组有助于对大量数据进行高级数学和其他类型的操作。通常,这些操作的执行效率更高,比使用Python原生数组的代码更少。
- 越来越多的基于Python的科学和数学软件包使用NumPy数组; 虽然这些工具通常都支持Python的原生数组作为参数,但它们在处理之前会还是会将输入的数组转换为NumPy的数组,而且也通常输出为NumPy数组。换句话说,为了高效地使用当今科学/数学基于Python的工具(大部分的科学计算工具),你只知道如何使用Python的原生数组类型是不够的 - 还需要知道如何使用 NumPy 数组
numpy 为什么这么快
底层运行的是C和C++的代码
ndarray 在存储数据的时候,数据与数据的地址都是连续的,而 python 原生 list 就只能通过寻址方式找到下一个元素,这样就给使得批量操作数组元素时速度更快
什么是维度、秩
对于维度(axis)的介绍,官网是这么写的“ In NumPy dimensions are called axes”,即 在NumPy中,维度被称为轴
什么是秩(rank)?它是指轴的数量,或者维度的数量,是一个标量
在下面的例子中,有一个数组 [1,2,1], 它的维度是1,也就是有一个轴,这个轴的长度是3,而它的秩也为1。这些信息,都可以通过NumPy提供的数组属性来获得