欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python中数组矩阵的运算、切片及相互转换

程序员文章站 2022-03-09 16:18:56
...

一、数组的运算

import numpy as np

#创建数组
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
a=[[1,2,3]
   [4,5,6]
   [7,8,9]]
b=np.array([[9,8,7],[6,5,4],[3,2,1]])
b=[[9,8,7]
   [6,5,4]
   [3,2,1]]
#a+b对应位置相加
c=a+b
c=[[10 10 10]
 [10 10 10]
 [10 10 10]]
#a*const数组每个元素乘以该常数
c=a*3
c=[[ 3  6  9]
 [12 15 18]
 [21 24 27]]
#a*b数组中每个对应元素相乘 
c=a*b
c=[[ 9 16 21]
 [24 25 24]
 [21 16  9]]
#数组的点乘相当于矩阵相乘
c=a*b
c=[[ 30  24  18]
 [ 84  69  54]
 [138 114  90]]
#改变矩阵的格式
c=a.reshape(1,9)
c=[[1 2 3 4 5 6 7 8 9]]

二、矩阵的运算

#数组转化为矩阵
a=np.mat(a)
b=np.mat(b)
#矩阵的乘法* 、np.dot()结果一致,按矩阵运算规则
#也可以reshape
#矩阵的转置
c=a.T
c=[[1 4 7]
 [2 5 8]
 [3 6 9]]
#矩阵的共轭转置
 c=a.H
 c=[[1 4 7]
 [2 5 8]
 [3 6 9]]
#矩阵的逆
c=a.I
c=[[ 3.15251974e+15 -6.30503948e+15  3.15251974e+15]
 [-6.30503948e+15  1.26100790e+16 -6.30503948e+15]
 [ 3.15251974e+15 -6.30503948e+15  3.15251974e+15]]
c=np.linalg.inv(a)
c=[[ 3.15251974e+15 -6.30503948e+15  3.15251974e+15]
 [-6.30503948e+15  1.26100790e+16 -6.30503948e+15]
 [ 3.15251974e+15 -6.30503948e+15  3.15251974e+15]]

三、相互转化

#数组转矩阵
array_to_matrix = np.mat(my_array)
#矩阵转数组
matrix_to_array = np.array(my_matrix)

四、切片

#a为三维举证
a=[[[9, 8, 7], [6, 5, 4], [3, 2, 1]], [[19, 18, 17], [16, 15, 14], [13, 12, 11]], [[29, 28, 27], [26, 25, 24], [23, 22, 21]]]

a[1,:]=[[19 18 17]
 [16 15 14]
 [13 12 11]]
a[1,1,:]=[16 15 14]
a[1,1,1]=15
a[:1:]=[[[9 8 7]
  [6 5 4]
  [3 2 1]]]
a[:,1:]=[[[ 6  5  4]
  [ 3  2  1]]
  [[16 15 14]
  [13 12 11]]
  [[26 25 24]
  [23 22 21]]]
a[:,1,1]=[ 5 15 25]
a[0:2,0:2,:]=[[[ 9  8  7]
  [ 6  5  4]]
  [[19 18 17]
  [16 15 14]]]