Numpy使用
import numpy as np
生成numpy数组
#生成长度为5的从0-4的数组
np.arange(5)
#生成为4行5列的0-19的数组
np.arnage(20).reshape((4,5))
#生成参数的数组
np.array([[1,2],[3,4]])
#生成3行4列的全0
print(np.zeros((3,4)))
#生成3行4列的全1
print(np.ones((3,4)))
#生成3行3列的对角线为1
print(np.eye((3)))
#生成2行3列的数组 (0-1)
print(np.random.rand(2,3))
#生成2行3列的数组 符合标准正太分布
print(np.random.randn(2,3))
#生成(0-100)的10行10列的数组
print(np.random.randint(0,100,(10,10)))
#使用随机种子,每次生成的数组都一样
np.random.seed(10)
print(np.random.randint(0,100,(3,2)))
数组shape
a=np.arnage(20).reshape((4,5))
#查看数组的shape
print(a.shape)
#更新数组的shape
a.reshape((5,4))
#将数组打散,转换为一行
a.flatten()
数组的运算
数组对应位置进行运算
a=np.arange(20).reshape((4,5))
print(a+2)
print(a-12)
print(a*2)
print(a/0)
numpy数据类型
#生成数据类型为float
a=np.array([random.random() for i in range(10)],dtype="float")
#数组元素保留两位小数
print(np.round(a,2))
#将数组类型转化为int
b=a.astype(int)
保留两位小数
numpy存取本地文件
读取:
#delimiter默认是" ",skiprows是跳过的行,默认为1
a=np.loadtxt("data.csv",delimiter=",",dtype="float",skiprows=0)
存储:
#delimiter默认是' ',fmt是保存数据格式
np.savetxt("data2.csv",b,fmt="%1.4e")
np.savetxt("data2.csv",b,fmt="%.f")
其中%.f
可以谢伟·%10.10f
意思为整数部分10位,小数部分10位
numpy的数据转置
a=np.arange(20).reshape(4,5)
b=a.transpose()
print(b)
print(a.T)
#交换0,1轴
print(a.swapaxes(1,0))
numpy的索引和切片
取一行
a=np.arange(20).reshape(4,5)
print(a[0])
取一列
a=np.arange(20).reshape(4,5)
print(a[:,0)
取多行
a=np.arange(20).reshape(4,5)
print(a[1:3])
取多列
a=np.arange(20).reshape(4,5)
print(a[:,1:3])
取不连续的多行
a=np.arange(20).reshape(4,5)
print(a[[0,2]])
取不连续的多列
a=np.arange(20).reshape(4,5)python
print(a[:,[0,2]])
取第1行,第2列的值
a=np.arange(20).reshape(4,5)
print(a[1,2])
取多行和多列(取交叉点),取第1行到第3行,第1列到第4列的结果
a=np.arange(20).reshape(4,5)
print(a[0:3,1:4])
取多个不相临的点
a=np.arange(20).reshape(4,5)
print(a[[0,2],[0,1]])
取的是列表对应位置的点(0,0)(2,1)
numpy中数值的修改
a=np.arange(20).reshape(4,5)
a[[0,2],[0,1]]=0
print(a)
取a中小于5的值
a=np.arange(20).reshape(4,5)
print(a[a<5])
将a中小于5的赋值为3
a=np.arange(20).reshape(4,5)
a[a<5]=3
print(a)
将a中小于3的数字替换为0,把大于3的替换为6(三目运算符)
a=np.arange(20).reshape(4,5)
print(np.where(a<3,0,6))
将a中小于3的数字替换为3,把大于6的替换为6
a=np.arange(20).reshape(4,5)
print(a.clip(3,6))
numpy的数组拼接
竖直拼接时候:每一列代表的意义相同,否则牛头不对马嘴
a=np.array([[1,2],[3,4]])
b=np.array([[5,6],[7,8]])
# 竖直拼接 vertically
c=np.vstack((a,b))
# 水平拼接 horizontally
d=np.hstack((a,b))
print(c)
print(d)
行交换
t[[1,2],:]=t[[2,1],:]
列交换
t[:,[1,2]]=t[:,[2,1]]
a=np.arange(20).reshape((4,5))
b=np.arange(20,40).reshape(4,5)
print(a+b)
print(a-b)
print(a*b)
print(a/b)
numpy的常见方法
print(np.max(a)) #全局最大
print(np.max(a,axis=0)) #每列最大
print(np.max(a,axis=1)) #每行最大
print(np.argmax(t,axis=0)) #每列最大的坐标
print(np.argmax(t,axis=1)) #每行最大的坐标