Numpy入门
多维数组
每个数组都是一个ndarray对象
数组的形状(Shape): 描述数组的维度,以及各个维度内部的元素个数
a[2][3] -> shape:(2,3)
a[5] -> shape:(5,)
一个学校,10个班级,一个班级30个学生,一个学生5门成绩
则可以用score[i,j,k]来表示其中一个学生的成绩
i -> 班级
j -> 学生 shape:(10,30,5)
k -> 课程
将三维数据转化为立方体->数据块,再将立方体堆叠形成->数据柱
5个年级 shape:(5,10,30,5)
将数据块平行放置,形成->数据墙
4个学校 shape:(4,5,10,30,5)
形状(shape):是一个元组,描述数组的维度,以及各个维度的长度
长度(length):某个维度中的元素个数
创建数组
a = np.array([列表]/(元组), dtype=数据类型 )
ndim 数组维数
shape 数组形状
size 数组元素总个数
dtype 数组中元素的数据类型
itemsize 数组中每个元素的字节数
b = np.array([[1,2,3],[4,5,6],[7,8,9]])
c = np.array([[[1,2,3,4],[5,6,7,8]],[[9,10,11,12],[13,14,15,16]],[[17,18,19,20],[21,22,23,24]]])
numpy中要求数组中元素类型一致
int8 uitn8 int16 uint16 int32 uint32 int64 uint64
float16 float32 float64 float128
complex64 complex128 complex256
bool object string_ unicode_
numpy特殊数组
arange() 创建数字序列数组
ones() 创建全1数组
zeros() 创建全0数组
eye() 创建单位矩阵
linspace() 创建等差数列
logspace() 创建等比数列
asarray() 将列表或元组转化为数组对象 引用原来数组
array() 同as~ 复制出一个副本
数组运算
函数
np.reshape(shape) 不改变当前数组,按照shape创建新的数组
np.resize(shape) 改变当前数组,按照shape创建数组
sum() 所有元素之和
按行/按列求和
轴(axis) 每一个维度为一个轴
秩(rank) 轴的个数为秩
prod() 所有元素乘积
diff() 相邻元素之间的差
sqrt() 元素的平方根
exp() 各元素指数和
abs() 各元素的绝对值
stack((数组),axis) 数组堆叠
运算
+ - * / 规则相同,可改变数组维度 数组运算数据精度低会向高精度自动转化
矩阵乘法
* 矩阵中对应元素分别相乘
np.matmul(A,B)/np.dot(A,B) 矩阵相乘规则
矩阵转置
np.transpose()
矩阵求逆
np.linalg.inv()
矩阵--numpy.matrix(字符串/列表/元组/数据) / mat(./././.)
例如:a = np.mat('1 2 3 ; 4 5 6')
矩阵运算--转置、求逆
转置:.T
求逆:.I
numpy中矩阵和二维数组相似 尽量使用数组
随机数模块-numpy.random
.rand(d0,d1,...,dn) ->[0,1]区间均匀分布 浮点数
.uniform(low,hige,size) ->[low,hige)区间均匀分布 浮点数
.randint(low,hige,size) ->[low,hige)区间均匀分布 整数
.randn(d0,d1,...,dn) ->标准正态分布的数组 浮点数
.normol(loc,scale,size) ->正态分布的数组 浮点数
伪随机数:由随机种子,根据一定算法生成
随机种子:指定随机数生成时所用算法开始的整数值
使用相同的.seed(),则每次产生的随机数一样。不设置则由系统根据时间来自己选择这个值
设置种子时,仅一次有效
打乱顺序函数-np.random.shuffle(序列)
抑制过拟合