Numpy使用笔记(2):矩阵的运算

2.矩阵的运算

2.1矩阵的函数运算

2.1.1常用的数学运算

import numpy as np
x = np.arange(10)  # 生成数据
np.sin(x)          # 对矩阵x中每个元素取正弦
np.cos(x)		   # 对矩阵x中每个元素取余弦
np.tan(x)		   # 对矩阵x中每个元素取正切
np.arcsin(x)	   # 对矩阵x中每个元素取反正弦
np.arccos(x)       # 对矩阵x中每个元素取反余弦
np.arctan(x)	   # 对矩阵x中每个元素取反正切
np.exp(x)		   # 对矩阵x中每个元素取指数函数
np.sqrt(x)	       # 对矩阵x中每个元素取开方

2.1.2矩阵乘法(*,np.multiply(),np.matmul(),np.dot())

# 元素级乘法,对应元素相乘  * 或 np.multiply()
m = np.array([[1,2,3],[4,5,6]])
n = np.array([[1,2,3],[4,5,6]])

m * n
# array([[ 1,  4,  9],
#       [16, 25, 36]])
np.multiply(m, n)
# array([[ 1,  4,  9],
#       [16, 25, 36]])

###############################
# 矩阵乘积 np.matmul()
m = np.array([[1,2,3],[4,5,6]])
n = np.array([[1,2],[3,4],[5,6]])

m.shape  # (2, 3)
n.shape  # (3, 2)
np.matmul(m, n)  # (2, 2)
#array([[22, 28],
#       [49, 64]])

###############################
# np.dot()
# 如果处理的是一维数组,则得到的是两数组的內积
# 如果是二维数组(矩阵)之间的运算,则得到的是矩阵积
m = np.array([1,2,3])
n = np.array([4,5,6])

np.dot(m, n)  # 1*4 + 2*5 + 3*6 = 32

a = np.array([[1,2,3],[4,5,6]])
b = np.array([[1,2],[3,4],[5,6]])

np.dot(a, b)
# array([[22, 28],
#       [49, 64]])

2.1.3矩阵的转置(np.transpose(),T)

m = np.array([[1,2,3],[4,5,6]])

m.transpose()  # np.transpose(m)
# array([[1, 4],
#       [2, 5],
#       [3, 6]])
m.T
# array([[1, 4],
#       [2, 5],
#       [3, 6]])

2.1.4矩阵的逆(np.linalg.inv())

m = np.array([[1, 2], [3, 4]])

np.linalg.inv(m)
# array([[-2. ,  1. ],
#       [ 1.5, -0.5]])
# 转换为matrix对象
M = np.matrix(m)
M.I
# matrix([[-2. ,  1. ],
#        [ 1.5, -0.5]])

2.1.5最大值最小值(max(),min())

m = np.array([[1,2,3],[4,5,6]])

m.max()  # 6
m.min()  # 1
# 使用axis关键字,获取行或列的最大、最小值
m.max(axis=0)
# array([4, 5, 6])

2.1.6平均值(mean(),np.average())

m = np.array([[1,2,3],[4,5,6]])

m.mean()  # 3.5
np.average(m)  # 3.5
m.mean(axis=0)  # 行平均,array([2.5, 3.5, 4.5])

2.1.7方差(var())、标准差(std())

m = np.array([[1,2,3],[4,5,6]])

m.var()  # 2.9166666666666665
m.var(axis=0)  # array([2.25, 2.25, 2.25])

m.std()  # 1.707825127659933
m.std(axis=0)  # array([1.5, 1.5, 1.5])

2.1.8中位数(np.median())

m = np.array([[1,2,3],[4,5,6]])
np.median(m)    # 3.5
np.median(m,axis=0)   # array([2.5, 3.5, 4.5])

2.1.9求和(sum())、累加(cumsum())

m = np.array([[1,2,3],[4,5,6]])

m.sum()   # 21
m.sum(axis=0)  # array([5, 7, 9])

m.cumsum()  # array([ 1,  3,  6, 10, 15, 21], dtype=int32)
m.cumsum(axis=0)  
# array([[1, 2, 3],
#       [5, 7, 9]], dtype=int32)
m.cumsum(axis=1) 
# array([[ 1,  3,  6],
#       [ 4,  9, 15]], dtype=int32)

2.2矩阵的截取

2.2.1按行列截取

m = np.array([[1,2,3],[4,5,6],[7,8,9]])

m[0:1]  # 第一行数据  array([[1, 2, 3]])
m[1, 1:2]  # 第二行,第二列数据  array([5])
m[2, :]   # 第三行数据  array([[7, 8, 9]])

2.2.2按条件截取

m = np.array([[1,2,3],[4,5,6],[7,8,9]])

m[m>5]
# array([6, 7, 8, 9])

#将矩阵中大于6的元素变成0
m[m>5] = 0
m
# array([[1, 2, 3],
#       [4, 5, 0],
#       [0, 0, 0]])

2.2.3clip截取

# 返回值:所有小于min的值都等于min,所有大于max的值都等于max
m = np.array([[1,2,3],[4,5,6],[7,8,9]])

m.clip(3,6)
# array([[3, 3, 3],
#       [4, 5, 6],
#       [6, 6, 6]])

2.3 矩阵的合并(np.hstack(),np.vstack(),np.concatenate())

m = np.array([[1,2,3],[1,2,3]])
n = np.array([[4,5,6],[4,5,6]])

np.hstack([m,n])  # 水平合并
# array([[1, 2, 3, 4, 5, 6],
#       [1, 2, 3, 4, 5, 6]])
np.vstack([m,n])  # 垂直合并
# array([[1, 2, 3],
#       [1, 2, 3],
#       [4, 5, 6],
#       [4, 5, 6]])

np.concatenate((m,n), axis=0) 
# array([[1, 2, 3],
#       [1, 2, 3],
#       [4, 5, 6],
#       [4, 5, 6]])
np.concatenate((m,n), axis=1) 
# array([[1, 2, 3, 4, 5, 6],
#       [1, 2, 3, 4, 5, 6]])

参考:
https://www.cnblogs.com/qflyue/p/8244331.html
https://www.numpy.org.cn/user/setting-up.html

你可能感兴趣的:(deep,learn,machine,learning,python,numpy)