numpy 基础使用
在深度学习的数据处理中,numpy可以说是最常用的一个库,笔者总结了部分numpy的常用功能及语法,以便日后查阅。
直接上代码,具体看注释
import numpy as np
vector_row=np.array([1,2,3]) #创建numpy数组
print(vector_row)
[1 2 3]
vector_column=np.array([[1], #创建numpy数组(列向量)
[2],
[3]])
print(vector_column)
[[1]
[2]
[3]]
from scipy import sparse
matrix=np.array([[0,0],[0,1],[3,0]])
matrix_sparse=sparse.csr_matrix(matrix) #创建稀疏矩阵
print(matrix_sparse)
(1, 1) 1
(2, 0) 3
matrix.shape#形状
(3, 2)
matrix.size
6
matrix.ndim#维数
2
add_100=lambda i:i+100
vectorized_add_100=np.vectorize(add_100)
vectorized_add_100(matrix) #每个元素+100
array([[100, 100],
[100, 101],
[103, 100]])
np.max(matrix,axis=0)#每列最大元素
array([3, 1])
np.max(matrix,axis=1)#每行最大元素
array([0, 1, 3])
matrix=np.array([[1,2,3],[4,5,6],[7,8,9]])#创建矩阵
np.mean(matrix)#均值
5.0
np.var(matrix)#方差
6.666666666666667
np.std(matrix)#标准差
2.581988897471611
np.mean(matrix,axis=0)#每一列的平均值
array([4., 5., 6.])
matrix=np.array([[1,2,3,4],[5,6,7,8]])
matrix.reshape(4,2)#改变矩阵形状
array([[1, 2],
[3, 4],
[5, 6],
[7, 8]])
matrix.reshape(1,-1)# -1表示可以根据需要填充数据,1 表示一行
array([[1, 2, 3, 4, 5, 6, 7, 8]])
matrix.T#转置
array([[1, 5],
[2, 6],
[3, 7],
[4, 8]])
matrix.flatten()#将矩阵转换成一维数组(展开)或使用reshape(1,-1)
array([1, 2, 3, 4, 5, 6, 7, 8])
np.linalg.matrix_rank(matrix)#计算矩阵的秩
2
matrix=np.array([[1,2,3],[2,4,6],[3,8,9]])
np.linalg.det(matrix)#计算矩阵的行列式
0.0
matrix.diagonal()#返回对角元素
array([1, 4, 9])
matrix.diagonal(offset=1)#返回主对角线向上偏移量为1的对角线元素
array([2, 6])
matrix.diagonal(offset=-1)#返回主对角线向下偏移量为1的对角线元素
array([2, 8])
matrix.trace()#计算矩阵的迹(对角线元素的和)
14
matrix=np.array([[1,-1,3],[1,1,6],[3,8,9]])
eigenvalues,eigenvectors=np.linalg.eig(matrix)#计算特征值和特征向量
eigenvalues
array([13.55075847, 0.74003145, -3.29078992])
eigenvectors
array([[-0.17622017, -0.96677403, -0.53373322],
[-0.435951 , 0.2053623 , -0.64324848],
[-0.88254925, 0.15223105, 0.54896288]])
vector_a=np.array([1,2,3])
vector_b=np.array([4,5,6])
np.dot(vector_a,vector_b)#计算两个向量的点积
32
matrix_a=np.array([[1,1,1],[1,1,1],[1,1,2]])
matrix_b=np.array([[1,3,1],[1,3,1],[1,3,8]])
np.add(matrix_a,matrix_b)#将两个矩阵相加
array([[ 2, 4, 2],
[ 2, 4, 2],
[ 2, 4, 10]])
np.subtract(matrix_a,matrix_b)#将两个矩阵相减
array([[ 0, -2, 0],
[ 0, -2, 0],
[ 0, -2, -6]])
np.dot(matrix_a,matrix_b)#两个矩阵相乘
array([[ 3, 9, 10],
[ 3, 9, 10],
[ 4, 12, 18]])
matrix_a*matrix_b#对应元素相乘
array([[ 1, 3, 1],
[ 1, 3, 1],
[ 1, 3, 16]])
matrix=np.array([[1,4],[2,5]])
np.linalg.inv(matrix)#计算方阵的逆
array([[-1.66666667, 1.33333333],
[ 0.66666667, -0.33333333]])
np.dot(np.linalg.inv(matrix),matrix)#逆矩阵与原矩阵相乘
array([[1.00000000e+00, 2.22044605e-16],
[0.00000000e+00, 1.00000000e+00]])
#生成伪随机数
np.random.seed(0)#设置随机数种子
np.random.random(3)#生成3个0到1之间的随机浮点数
array([0.5488135 , 0.71518937, 0.60276338])
np.random.randint(0,11,3)#生成3个1到10之间的随机整数
array([3, 7, 9])
#从平均值是0且标准差是1的正态分布中抽取三个数
np.random.normal(0.0,1.0,3)
array([-1.42232584, 1.52006949, -0.29139398])
#从大于或等于1.0并且小于2.0的范围中抽取3个数
np.random.uniform(1.0,2.0,3)
array([1.27265629, 1.47766512, 1.81216873])