Numerical Python(Numpy)是一个开源的Python科学计算库,使用Numpy可以方便的使用数组、矩阵进行计算,包含线性代数、傅里叶变换、随机数生成等大量函数。
与原生的Python实现相比,使用Numpy是直接以数组、矩阵为粒度计算,并且支持大量的数学函数,而Python需要用for循环从底层实现。并且Numpy的数组存储效率和输入输出计算性能,比Python使用List或者嵌套List好很多。
Numpy的数据存储和Python原生的List是不一样的,Numpy的大部分代码都是C语言实现的,这也是Numpy代码更高效的原因。Numpy的array和Python的List的一个区别,Numpy的array的元素必须都是同一种数据类型,比如都是数字int类型,这也是Numpy高性能的一个原因。
创建数据
array本身的属性
- shape:返回一个元组,表示array的维度
- ndim:一个数字,表示array的维度的数目
- size:一个数字,表示array中所有数据元素的数目
- dtype:array中元素的数据类型
创建array的方法
从Python的列表List和嵌套列表创建array。
使用预定函数arange、ones/ones_like、zeros/zeros_like、empty/empty_like、full/full_like、eye等函数创建
- 使用
arange创建数字序列
语法:arange(start, stop, step, dtype=None)。
- 使用ones创建全是1的数组
语法:np.ones(shape, dtype=None, order='C');shape : int or tuple of ints Shape of the new array, e.g., (2, 3) or 2.
- 使用ones_like创建形状相同的数组
语法:ones_like(a, dtype=float, order='C')。
- 使用zeros创建全是0的数组
语法:np.zeros(shape, dtype=None, order='C')。
- 使用zeros_like创建形状相同的数组
语法:np.zeros_like(a, dtype=None)。
- 使用empty创建全是0的数组
语法:empty(shape, dtype=float, order='C');注意:数据是未初始化的,里面的值可能是随机值不要用:
- 使用empty_like创建形状相同的数组
语法:empty_like(prototype, dtype=None)。
- 使用full创建指定值的数组
语法:np.full(shape, fill_value, dtype=None, order='C')。
- 使用full_like创建形状相同的数组
语法:np.full_like(a, fill_value, dtype=None)
生成随机数的np.random模块构建
- 使用random模块生成随机数的数组:
array本身支持的大量操作和函数
- 直接逐元素的加减乘除等算数操作
- 更好用的面向多维的数组索引
- 求sum/mean等聚合函数
- 线性代数函数,比如求解逆矩阵、求解方程组