numpy 操作矩阵与数组
numpy是python进行数据分析时,必不可少的一个第三方模块.它提供了大量的方法帮我们操作矩阵和数组.
矩阵的创建
import numpy as np
mat = np.mat("1 2 3; 2 3 4; 1 2 3")
# 注意 空格表示同一行中的另外一个元素,分号表示换行
矩阵的运算
矩阵相加
mat1 + mat2
矩阵相乘
mat1 * mat2
矩阵转置
mat.T
逆矩阵
mat.I
矩阵数乘
4*mat
对应矩阵相乘
np.multiply(amt1,mat2)
矩阵的属性
查看矩阵的结构
mat.shape
查看矩阵的个数
mat.size
矩阵的类型
mat.dtype
矩阵的维度
mat.ndim
数组的创建
arr = np.array([1, 2, 3])
数组的属性
查看数组的结构
arr.shape
查看数组的个数
arr.size
数组的类型
arr.dtype
数组元素的类型
arr.ndim
数组的索引
一维数组的索引
arr[::-1]
二维数组的切片
arr[::-1, :: -1]
不同行不同列的切片
arr[(0,1),(0,2)]
布尔取值
mask = np.array([1, 0, 1],dtype = np.bool)
arr[mask,:2]
等差数列
np.linspace(start ,1end, n)
等比数列
np.logspace(start,end,n,basepoint = m)
构建特殊类型的数组
构建全一数组
np.ones(()) # 传的第一个参数是一个结构元组
构建全零数组
np.zeros(())
单位数组
np.eye() # 只需传一个参数,表示数组的行数及列数
对角阵数组
np.diag([]) # 中间的列表传到的是对角线的值
0-1间的n个随机数
np.random.random(n) # 参数为随机数的个数
随机整数
np.random.randint(2,4,[4,3])# 参数分别为:随机范围,结构
正则分布随机数
np.random.randn()
形态变换
np.arange(n).reshape(()) # 参数表示变换后的数组的结构
横向合并
np.hastack((arr1,arr2))# 行数一致
纵向合并
np.vstack(()) # 列数一致
沿着轴拼接
np.concatenate((arr1,arr2),axis=0)# axis是轴数,只能填写现有轴
横向分割
np.hsplit(arr1,n|()) # 参数为元祖时,元组的元素为分割点(索引)
纵向分割
np.vsplit()
沿轴分割
np.split(arr1,axis=0) # 轴存在才可以切
数组的运算
四则运算
相乘
arr1 * arr2
求幂
arr1**arr2
相加
arr1 + arr2
相除
arr1/arr2
整除
arr1 //arr2
取余
arr1 % arr2
比较运算
< > = !=
对应比较,返回值是一个bool数组.
逻辑运算
and
np.all()
or
np.any()
广播运算
# 实例:
[[1 2 3]
[1 2 3]
[1 2 3]
] + [1 1 1]
= [ [2 3 4]
[2 3 4]
[2 3 4]
]
# 即 一个数组与一个列数组或者行数组进行计算,会将列数组或者行数组与对应列或对应行中的元素依次计算.
排序
arr1.sort() # 修改原数组
arr1.argsort() # 返回排序后元素的索引
去重python
np.unique(arr2,axios=0,return_counts=True) # 按轴方向进行去重,return_counts设置为True后会返回元素的数量
文件操作
保存为二进制文件
np.save('arr2.npy',arr2) # 后缀名为npy或者npz,必须用numpy来操作.
读取二进制文件
np.load('arr.npy')
多个数组的保存
np.savez('arrz',arr1,arr2)
多数组文件的读取
data = np.load('arr.npz')
查看npzfile下的文件
print(list(data)) # 查看文件列表
print(data['arr_0']) # 查看文件内容
txt文件的保存与读取
np.savetxt('arr2',arr2,fmt='%d',delimiter=',',dtype='str')
统计分析方法
最大最小值
arr.min(axis=0) # 最小值
arr.max(axis=0) # 最大值
最大值索引
arr.argmax(axis=0)# 返回值为最大值索引
arr.argmin(axis=0)# 返回值为最小值索引
标准差,方差
arr.std(axis=0) #方差
arr.var(axis=0) # 标准差
求和,平均平均值
arr.sum(axis=0) # 求和
arr.mean(axis=0)# 求平均值
累计求和
arr.cumsum()
累计求积
arr.cumprod() # 注意数据类型的上下限