Python矩阵计算

# coding=gbk  # 防止出现中文编译错误
import numpy as np 
list_x=[[1,1],[92,2]]  #列表
array_x=np.array(list_x) #将列表转化成二维数组
mat_x=np.mat(list_x) # 将列表转化成矩阵
mat_x_t=mat_x.T #矩阵转置
mat_x_p=mat_x.I #矩阵求逆
sum_r=mat_x.sum(axis=0) #矩阵每行求和
sum_c=mat_x.sum(axis=1) #矩阵每列求和
sum_=np.sum(mat_x[:,:]) #矩阵求和, 注意np.sum 不同于sum


max_=np.max(mat_x) #计算矩阵中所有元素的最大值,这里得到的结果是一个数值
max_c2=np.max(mat_x[:,1]) #计算第二列的最大值, 注意np.max得到的是一个数值,max得到的是一个1*1的矩阵
max_r2=mat_x[1,:].max() #计算第二行的最大值,这里得到的是一个一个数值


max_c=np.max(mat_x,0) #计算所有列的最大值,这里使用的是numpy中的max函数
max_r=np.max(mat_x,1) #计算所有行的最大值,这里得到是一个矩阵


argmax_c=np.argmax(mat_x,0) # 计算所有列的最大值对应在该列中的索引
argmax_r2=np.argmax(mat_x[1,:]) #计算第二行中最大值对应在该行的索引


vstack_x_xt=np.vstack((mat_x,mat_x_t)) # 按列合并,即增加行数
hstack_x_xt=np.hstack((mat_x,mat_x_t)) #按行合并,即行数不变,扩展列数


dimension=mat_x.ndim;
m,n=mat_x.shape;
size=mat_x.size #元素总个数
type=mat_x.dtype #元素的类型


print("list_x=",list_x)
print("array_x=",array_x)
print("mat_x=",mat_x)
print("mat_x_t=",mat_x_t)
print("mat_x_p=",mat_x_p)
print("x*x_p=",mat_x*mat_x_p) #矩阵相乘
print("x.*x=",np.multiply(mat_x,mat_x)) #矩阵点乘
print("sum_r=",sum_r)
print("sum_c=",sum_c)
print("sum_=",sum_)


print("max_=",max_)
print("max_c2=",max_c2)
print("max_r2=",max_r2)
print("max_c=",max_c)
print("max_r=",max_r)
print("argmax_c=",argmax_c)
print("argmax_r2=",argmax_r2)


print("vstack_x_xt=",vstack_x_xt)
print("vstack_x_xt=",vstack_x_xt)


print("dimension=",dimension)
print("m,n=",m,n)
print("size=",size)

print("type=",type)


#以下为计算结果

list_x= [[1, 1], [92, 2]]
array_x= [[ 1  1]
 [92  2]]
mat_x= [[ 1  1]
 [92  2]]
mat_x_t= [[ 1 92]
 [ 1  2]]
mat_x_p= [[-0.02222222  0.01111111]
 [ 1.02222222 -0.01111111]]
x*x_p= [[ 1.  0.]
 [ 0.  1.]]
x.*x= [[   1    1]
 [8464    4]]
sum_r= [[93  3]]
sum_c= [[ 2]
 [94]]
sum_= 96
max_= 92
max_c2= 2
max_r2= 92
max_c= [[92  2]]
max_r= [[ 1]
 [92]]
argmax_c= [[1 1]]
argmax_r2= 0
vstack_x_xt= [[ 1  1]
 [92  2]
 [ 1 92]
 [ 1  2]]
vstack_x_xt= [[ 1  1]
 [92  2]
 [ 1 92]
 [ 1  2]]
dimension= 2
m,n= 2 2
size= 4
type= int32

你可能感兴趣的:(python)