numpy模块
专门数组(矩阵)的运算
lis1=[1,2,3]
lis2=[4,5,6]
如果我们想让lis1 * lis2
得到一个结果为lis_res = [4, 10, 18]
,非常复杂。
lis=[]
for i in range(len(lis1)):
lis.append(lis1[i]*lis2[i])
print(lis)
使用numpy模块
import numpy as np
arr1=np.array([1,2,3])
arr2=np.array([4,5,6])
print(arr1*arr2)
numpy数组
import numpy as np
arr=np.array([1,2,3])
print(arr) #一维numpy数组
import numpy as np
arr2=np.array([[1,2,3],[4,5,6]])
print(arr2) #二维numpy数组(一般就是二维)
三维的不使用numpy模块,使用tensorflow/pytorch模块
属性
T 数组的转置(对高维数组而言)
dtype 数组元素的数据类型
size 数组元素的个数
ndim 数组的维数
shape 数组的维度大小(以元组形式)
astype 类型转换
import numpy as np
arr2=np.array([[1,2,3],[4,5,6]])
print(arr2.T) #行与列互换
print(arr2.dtype) #int32
print(arr2.astype(np.float64).dtype) #float64
print(arr2.size) #6
print(arr2.shape) #(2,3)
print(arr2.ndim) #2
切片
import numpy as np
lis=[1,2,3]
# print(lis[:])
arr2=np.array([[1,2,3],[4,5,6]])
# print(arr2)
print(arr2[:,:]) #取所有
print(arr2[0:1,:]) #取第一行所有
print(arr2[0:1,0:1]) #取第一行第一列
print(arr2[0,:]) #[1 2 3]
print(arr2[0,0],type(arr2[0,0])) #1 <class 'numpy.int32'>
print(arr2[0,[0,2]]) #[1 3]
print(arr2[0,0]+1) #2
合并
import numpy as np
arr1=np.array([[1,2,3],[4,5,6]])
arr2=np.array([[7,8,9],[10,11,12]])
print(np.hstack((arr1,arr2)))#行合并
print(np.vstack((arr1,arr2)))#列合并
print(np.concatenate((arr1,arr2)))#默认列合并
print(np.concatenate((arr1,arr2),axis=0))#1表示行,0表示列
通过函数创建numpy数组
import numpy as np
arr1=np.array([[1,2,3],[4,5,6]])
print(np.zeros((5,5)))#5行5列的0
print(np.ones((5,5))*2)#5行5列的2
print(np.eye(5)) #eye创建单位矩阵
print(np.arange(1,10,2)) # 生成一维的
print(np.linspace(0,20,10)) # 平均分成10份 # 构造x坐标轴的值
arr = np.zeros((5, 5))
print(arr.reshape((1,25))) #重塑形状
数组运算
import numpy as np
arr1 = np.array([[1, 2, 3], [4, 5, 6]]) # 可变数据类型
print(arr1)
arr2 = np.array([[7, 8, 9], [10, 11, 12]]) # 可变数据类型
print(arr2)
# +-*/ // % **
print(arr1*arr2)
print(arr1+arr2)
运算函数
import numpy as np
# 运算函数
arr1 = np.array([[1, 2, 3], [4, 5, 6]]) # 可变数据类型
print(arr1)
print(np.sin(arr1)) #正弦
print(np.cos(arr1)) #余弦
print(np.sqrt(arr1)) #开根号
print(np.exp(arr1)) #取指数函数
额外补充
import numpy as np
arr1 = np.array([[1, 2, 3], [4, 5, 6]]) # 可变数据类型
print(arr1)
arr2 = np.array([[7, 8, 9], [10, 11, 12]]) # 可变数据类型
print(arr2)
print(arr1.T)
print(arr1.transpose())
# m*n * n*m = m*m
print(np.dot(arr1,arr2.T))
# 求逆
arr1 = np.array([[1, 2, 3], [4, 5, 6], [9, 8, 9]])
print(np.linalg.inv(arr1))
numpy的数学方法
import numpy as np
arr1 = np.array([[1, 2, 3], [4, 5, 6]]) # 可变数据类型
print(arr1)
print(arr1.var())
print(arr1.std())
print(arr1.mean())
print(arr1.cumsum()) # 累加和
sum | 求和 |
---|---|
cumsum | 累加求和 |
mean | 求平均数 |
std | 求标准差 |
var | 求方差 |
min | 求最小值 |
max | 求最大值 |
argmin | 求最小值索引 |
argmax | 求最大值索引 |
sort | 排序 |
numpy随机数(了解)
print(np.random.rand(3,4)) 产生均匀分布的随机数
print(np.random.randint(1,10,(3,4))) # 最小值1,最大值10,3*4 产生随机整数
print(np.random.choice([1,2,3,4,5],3)) #从arr中随机选择指定数据
print(arr1)
np.random.shuffle(arr1)
print(arr1)
重点
np.random.seed(int(time.time()))
np.random.seed(1)
arr1 = np.random.rand(3,4) # 可变数据类型
print(arr1)
rs = np.random.RandomState(1)
print(rs.rand(3,4))