摘要:Python作为一门简洁优美且功能强大的语言,越来越受编程人员的喜欢。在工业界和学术界也是非常受欢迎的编程语言。在python处理数据中,Numpy也是常有的工具,本文简要介绍,旨在大家熟悉相关应用。(本文原创,转载必须注明出处.)
导入相关的numpy包
import numpy from numpy import array from numpy import mat,matrix # 导入矩阵包 from numpy import shape # 查看矩阵或数组的方法 from numpy import multiply # 元素相乘 import random
计算方法
向量求和
def nu_add(): mm = array((1,1,1)) pp = array((2,2,2)) rr = mm + pp**3 # 数组的和运算 print(rr)
运行结果:
[9 9 9]
矩阵相乘
def nu_matrix(): ss = mat([1,2,3]) # 矩阵 mm = matrix([1,2,3]) print('an element: '.title()+str(mm[0,0])) # 访问矩阵中的单个元素 print('Number of dimensions of mm '.title()+str(shape(mm))) print('mat is equal matrix: '.title()+str(ss==mm)) print('Matrix multiplication: '.title()+str(ss*mm.T)) # 矩阵相乘需要进行转置 print('Multiplication of elements: '.title()+str(multiply(mm,ss))) # mm每个元素和ss每个元素相乘
运行结果:
An Element: 1
Number Of Dimensions Of Mm (1, 3)
Mat Is Equal Matrix: [[ True True True]]
Matrix Multiplication: [[14]]
Multiplication Of Elements: [[1 4 9]]
列表转化成矩阵
def nu_list_mat(): pylist = [1,2,3] rr = mat(pylist) # 列表转化成矩阵 print('list values: '.title()+str(pylist)) print('rr type: '.title()+str(type(rr))) print('mat values: '.title()+str(rr))
运行结果:
List Values: [1, 2, 3]
Rr Type: <class 'numpy.matrixlib.defmatrix.matrix'>
Mat Values: [[1 2 3]]
矩阵求均值
def nu_mean(): dd = mat([4,5,1]) rr = dd.mean() # 矩阵的均值 print('mean of dd: '.title()+ str(rr))
运行结果:
Mean Of Dd: 3.3333333333333335
矩阵维度
def nu_mul_array(): jj = mat([[1,2,3],[8,8,8]]) print('Number of dimensions of jj '.title()+str(shape(jj))) one_row = jj[1,0:2] print(one_row)
运行结果:
Number Of Dimensions Of Jj (2, 3)
[[8 8]]
矩阵转置
def nu_tran_mat(): # 矩阵转置 radMat = numpy.random.random((3,3)) print('Before matrix transposition:\n '+str(radMat)) print('After matrix transposition:\n '+str(radMat.T))
运行结果:
Before matrix transposition:
[[0.44400432 0.39811184 0.15014053]
[0.33399525 0.35953194 0.92571106]
[0.3307816 0.38282677 0.01282852]]
After matrix transposition:
[[0.44400432 0.33399525 0.3307816 ]
[0.39811184 0.35953194 0.38282677]
[0.15014053 0.92571106 0.01282852]]
矩阵的逆
def nu_inverse_mat(): # 矩阵的逆 radMat = numpy.random.random((3,3)) print('Before matrix inverse:\n '+str(radMat)) print('After matrix inverse:\n '+str(mat(radMat).I))
运行结果:
Before matrix inverse:
[[0.67119611 0.28502048 0.00101008]
[0.66644679 0.61934535 0.39481694]
[0.10938817 0.22939074 0.45364209]]
After matrix inverse:
[[ 3.52467918 -2.38933642 2.07165582]
[-4.79734922 5.63471564 -4.89336308]
[ 1.57593243 -2.27312782 4.17923641]]
矩阵与逆矩阵相乘
def nu_mat_mul_imat(): # 矩阵与其逆矩阵相乘 bmat = mat(numpy.random.random((3,3))) imat = bmat.I rus = bmat * imat print(rus) # 结果是3*3的单位矩阵,其位置原则应该都是0,实际中是非常小的数,这个计算机处理的问题
运行结果:
[[ 1.00000000e+00 -2.23066267e-17 -3.47038713e-17]
[-7.97119302e-17 1.00000000e+00 1.74271619e-17]
[-3.16553513e-16 -8.86129567e-17 1.00000000e+00]]
参考文献
- Python官网
- 中文维基百科
- GitHub
- 图书:《机器学习实战》
- 图书:《自然语言处理理论与实战》
完整代码下载
作者声明
本文版权归作者所有,旨在技术交流使用。未经作者同意禁止转载,转载后需在文章页面明显位置给出原文连接,否则相关责任自行承担。