Python numpy中矩阵的基本用法汇总
2019-09-13 11:52:28 来源:易采站长站 作者:于丽
import numpy as np b1 = np.array([True,False,True,False]) res1 = np.nonzero(b1) print(res1) # (array([0, 2], dtype=int64),)
对于二维数组b2,nonzero(b2)所得到的是一个长度为2的元组,它的第0个元素是数组a中值不为0的元素的第0个轴的下标,第一个元素则是第1轴的下标,因此从下面得到的结果可知b2[0,0] , n2[0,2]和b2[1,0]的值不为0:
b2 = np.array([[True,False,True],[True,False,False]]) res2 = np.nonzero(b2) print(res2) # (array([0, 0, 1], dtype=int64), array([0, 2, 0], dtype=int64))
当布尔数组直接做维下标时,相当于使用由nonzero()转换之后的元组作为下标对象:
b3 = np.arange(3*4*5).reshape(3,4,5) res3 = b3[np.nonzero(b2)] print(res3) ''' [[ 0 1 2 3 4] [10 11 12 13 14] [20 21 22 23 24]] '''
3,常见的矩阵运算
3.1,矩阵相乘(*)
就是矩阵的乘法操作,要求左边矩阵的列和右边矩阵的行数要一致
from numpy import * ''' 1*2 的矩阵乘以2*1 的矩阵 得到1*1 的矩阵''' a1 = mat([1,2]) print(a1) a2 = mat([[1],[2]]) print(a2) a3 = a1*a2 print(a3) ''' [[1 2]] [[1] [2]] [[5]] '''
3.2,矩阵点乘(multiply)
矩阵点乘则要求矩阵必须维数相等,即M*N维矩阵乘以M*N维矩阵
from numpy import * ''' 矩阵点乘为对应矩阵元素相乘''' a1 = mat([1,1]) print(a1) a2 = mat([2,2]) print(a2) a3 = multiply(a1,a2) print(a3) ''' [[1 1]] [[2 2]] [[2 2]] ''' a1 = mat([2,2]) a2 = a1*2 print(a2) # [[4 4]]
3.3,矩阵求逆变换(.I)
from numpy import * ''' 矩阵求逆变换:求矩阵matrix([[0.5,0],[0,0.5]])的逆矩阵''' a1 = mat(eye(2,2)*0.5) print(a1) a2 = a1.I print(a2) ''' [[0.5 0. ] [0. 0.5]] [[2. 0.] [0. 2.]] '''
3.4,矩阵求转置(.T)
from numpy import * '''矩阵的转置''' a1 = mat([[1,1],[0,0]]) print(a1) a2 = a1.T print(a2) ''' [[1 1] [0 0]] [[1 0] [1 0]] '''
3.5,求矩阵对应列行的最大值,最小值,和。
计算每一列,行的和
from numpy import * '''计算每一列,行的和''' a1 = mat([[1,1],[2,3],[4,5]]) print(a1) # 列和,这里得到的是1*2的矩阵 a2=a1.sum(axis=0) print(a2) ''' [[7 9]] ''' # 行和,这里得到的是3*1的矩阵 a3=a1.sum(axis=1) print(a3) ''' [[2] [5] [9]] ''' # 计算第一行所有列的和,这里得到的是一个数值 a4=sum(a1[1,:]) print(a4) ''' 5 '''
计算最大,最小值和索引
from numpy import * '''计算每一列,行的和''' a1 = mat([[1,1],[2,3],[4,5]]) print(a1) ''' [[1 1] [2 3] [4 5]] ''' # 计算a1矩阵中所有元素的最大值,这里得到的结果是一个数值 maxa = a1.max() print(maxa) #5 # 计算第二列的最大值,这里得到的是一个1*1的矩阵 a2=max(a1[:,1]) print(a2) #[[5]] # 计算第二行的最大值,这里得到的是一个一个数值 maxt = a1[1,:].max() print(maxt) #3 # 计算所有列的最大值,这里使用的是numpy中的max函数 maxrow = np.max(a1,0) print(maxrow) #[[4 5]] # ;//计算所有行的最大值,这里得到是一个矩阵 maxcolumn = np.max(a1,1) print(maxcolumn) ''' [[1] [3] [5]] ''' # 计算所有列的最大值对应在该列中的索引 maxindex = np.argmax(a1,0) print(maxindex) #[[2 2]] # 计算第二行中最大值对应在改行的索引 tmaxindex = np.argmax(a1[1,:]) print(tmaxindex) # 1
暂时禁止评论













闽公网安备 35020302000061号