在python中进行矩阵、数组的运算

需要安装numpy模块,在DOS命令行中执行pip install numpy就可以,python新版本集成了pip功能的。

直接上代码,看注释

# coding=utf-8
import numpy as np  #调用numpy模块,重命名为np
from numpy import *   #调用numpy模块中所有方法

#矩阵创建:
a=mat([[-2,3,4],[4,9,-8],[2,5,7]])  #创建多行矩阵,用mat([[第一行],[第二行],```])
b=mat([[4,3,3],[5,7,6],[6,8,10]])   #创建方阵
a1=mat([1,2,3])  #创建单行矩阵可以mat([])
data1 = mat(zeros((3, 3))) # 创建一个3*3的零矩阵,矩阵这里zeros函数的参数是一个tuple类型(3,3)
data2 = mat(ones((2, 4))) # 创建一个2*4的1矩阵,默认是浮点型的数据,如果需要时int类型,可以使用dtype=int
data3 = mat(random.rand(2, 2)) # 这里的random模块使用的是numpy中的random模块,random.rand(2,2)创建的是一个二维数组,需要将其转换成matrix
data4 = mat(random.randint(10, size=(3, 3))) # 生成一个3*3的0-10之间的随机整数矩阵,如果需要指定下界则可以多加一个参数
data5 = mat(random.randint(2, 8, size=(2, 5))) # 产生一个2-8之间的随机整数矩阵
data6 = mat(eye(2, 2, dtype=int)) # 产生一个2*2的对角矩阵
a3 = mat(diag([1, 2, 3]))# 生成一个对角线为1、2、3的对角矩阵
b1=array([1,2,3]) #创建数组

#矩阵的基本运算:
print(a+b)   #矩阵相加
print(a-b)     #负矩阵
print(a*9)   #矩阵数乘
print(multiply(a,b))   #两个矩阵间相同位置的元素相乘
print(a*b,"\n",b*a)   #矩阵相乘,a1左乘以b,b左乘以a1
print(a.T)  #矩阵转置
print(a.I)   #矩阵求逆
print(np.linalg.matrix_rank(a)) #矩阵求秩
print(np.linalg.det(a))  #矩阵行列式
print(trace(a))  #矩阵的迹运算 
#计算矩阵对应行列的和。
print(a.sum(axis=0)) #列和,这里得到的是1*3的矩阵
print(a.sum(axis=1)) #行和,这里得到的是3*1的矩阵)
print(a,sum(a[0,:]))  #计算第一行所有元素的和,这里得到的是一个数值,下标是从0开始数。
print(sum(a[:,1]))   #计算第二列所有元素的和。

#计算矩阵对应行列最大值,最小值,索引
print(a.max())   #计算a矩阵中所有元素的最大值,这里得到的结果是一个数值.
print(max(a[:,0]))#计算第一列中的最大值,,这里得到的是一个1*1的矩阵
print(a[1,:].max())  #计算第二行的最大值,这里得到的是一个一个数值
print(np.max(a,0))  #计算所有列的最大值,这里使用的是numpy中的max函数,得到的是一个矩阵
print(np.max(a,1))   #计算所有行的最大值,这里得到是一个矩阵
print(np.argmax(a,0))  #计算所有列的最大值对应在该列中的索引,索引从0开始数。
print(np.argmax(a,1))  #计算所有行的最大值对应在该列中的索引

#矩阵的分隔和合并
print(a[2:,0:])   #分割出第三行以后的的所有元素
print(a[0:,1:])   #分割出第二列以后的所有元素
print(a[1:,1:])  #分割出第二行以后的行和第二列以后的列的所有元素
print(vstack((a,b)))  #按列合并,即增加行数
print(hstack((a,b)))  #按行合并,即行数不变,扩展列数

# 矩阵、列表、数组的转换
lista=[1,3,2,9]
print(a.tolist())  #矩阵转换成列表,数组转换成列表也用tolist()方法
print(array(a))  #矩阵转换成数组
print(mat(lista))  #列表转换成矩阵
print(array(lista))  #列表转换成数组

我都是用的print()打印,并没有实际去真正的转换,需要的自己去操作,我只演示的方法,并能看到结果,后续继续更新,现在正在学习矩阵中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值