Numpy是一个科学计算库,其中提供的ndarray具有很多优势。
ndarray的属性:
在创建ndarray时,如果没有指定,会设定为int64或者float64类型
创建时可以使用np.array([[1,2,3],[4,5,6]],dtype=np.float32),对ndarray的类型进行指定。
生成数组的方法:
1)生成0和1数组:
np.zeros(shape,dtype)
np.ones(shape,dtype)
2)从已有的数组中生成ndarray
np.array() 深拷贝
np.asarray() 浅拷贝
np.copy() 深拷贝
3)生成固定范围的数组
np.linspace(start,end,step) 数据范围是两边闭区间
np.arange(start,end,step) 数据范围是左闭右开
4)生成随机数组
均匀分布:
生成[0,1)范围内的一组均匀的数
np.random.rand(d0,d1....dn)
从一个均匀分布中随机采样
np.random.uniform(low=0.0,high=1.0,size=None)
返回值为ndarray类型,形状与参数size中描述的一致
np.random.randint(low,high=None,size=None,dtype="l")
从一个均匀分布中随机采样,生成一个整数或者N维整数数组。
若high不为None,取[low,high),否则取[0,low)
正态分布:
np.random.normal(loc=0.0,scale=1.0,size=None)
loc:float 均值
scale:float 标准差
size:输出的shape
返回值为指定的正态分布的数组
5)形状修改
ndarray.reshape(shape)
不是直接改变行列,直接重新分组 返回新的ndarray,原始数据没有改
ndarray.resize(shape)
与上函数结果相同,但是不返回数组,直接在原数组上进行修改
ndarray.T
行列互换,进行转置运算
6)类型修改
ndarray.astype(type)
进行类型的修改
ndarray.tostring()
ndarray序列化到本地
数组间运算:
1)数组与数的运算
直接使用符号,符号可以作用到数中的每个元素。
2)数组与数组的运算
数组与数组之间的运算需要满足广播机制
3)矩阵运算
Numpy中存储矩阵的方法有两种:
①使用ndarray来存储矩阵
②使用matrix来存储矩阵
np.mat(ndarray)
矩阵乘法:
np.matmul(ndarray1,ndarray2)
np.dot(ndarray1,ndarray2)
若用ndarray来存储矩阵,可以使用@运算符
若用matrix来存储矩阵,可以使用*运算符
合并与分割:
1)合并:
np.hstack()
水平拼接
np.vstack()
竖直拼接
np.concatenate(axis)
可以通过axis来执行进行竖直拼接或者水平拼接
传入参数为tuple类型,包括要进行拼接的ndarray
2)分割:
np.split(ary,axis)
传入分割的数组和分割的方向。
也可以传入列表,表示分割的索引。
IO操作:
读取文件:
np.genfromtxt(path,delimiter=",")
前面传入文件路径,后面定义分割符号。
numpy读取会将缺失值写为nan,同时字符串也会写为nan。
nan数据可以通过两种方式进行处理:
①将存在nan的值直接删除。
②将nan的值进行替换。