Numpy系列(一)array对象以及创建array的方法
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等聚合函数
- 线性代数函数,比如求解逆矩阵、求解方程组