python 怎么实现矩阵运算

Python023

python 怎么实现矩阵运算,第1张

1.numpy的导入和使用

data1=mat(zeros((

)))

#创建一个3*3的零矩阵,矩阵这里zeros函数的参数是一个tuple类型(3,3)

data2=mat(ones((

)))

#创建一个2*4的1矩阵,默认是浮点型的数据,如果需要时int类型,可以使用dtype=int

data3=mat(random.rand(

))

#这里的random模块使用的是numpy中的random模块,random.rand(2,2)创建的是一个二维数组,需要将其转换成#matrix

data4=mat(random.randint(

10

,size=(

)))

#生成一个3*3的0-10之间的随机整数矩阵,如果需要指定下界则可以多加一个参数

data5=mat(random.randint(

,size=(

))

#产生一个2-8之间的随机整数矩阵

data6=mat(eye(

,dtype=

int

))

#产生一个2*2的对角矩阵

a1=[

]a2=mat(diag(a1))

#生成一个对角线为1、2、3的对角矩阵

python实现矩阵乘法的方法

def matrixMul(A, B):

res = [[0] * len(B[0]) for i in range(len(A))]

for i in range(len(A)):

for j in range(len(B[0])):

for k in range(len(B)):

res[i][j] += A[i][k] * B[k][j]

return res

def matrixMul2(A, B):

return [[sum(a * b for a, b in zip(a, b)) for b in zip(*B)] for a in A]

a = [[1,2], [3,4], [5,6], [7,8]]

b = [[1,2,3,4], [5,6,7,8]]

print matrixMul(a,b)

print matrixMul(b,a)

乘积形式

除了上述的矩阵乘法以外,还有其他一些特殊的“乘积”形式被定义在矩阵上,值得注意的是,当提及“矩阵相乘”或者“矩阵乘法”的时候,并不是指代这些特殊的乘积形式,而是定义中所描述的矩阵乘法。在描述这些特殊乘积时,使用这些运算的专用名称和符号来避免表述歧义。

python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包。

计算矩阵对应行列的最大、最小值、和。

3>>>a1=mat([[1,1],[2,3],[4,2]])

>>>a1

matrix([[1, 1],

[2, 3],

[4, 2]])

计算每一列、行的和

>>>a2=a1.sum(axis=0) #列和,这里得到的是1*2的矩阵

>>>a2

matrix([[7, 6]])

>>>a3=a1.sum(axis=1) #行和,这里得到的是3*1的矩阵

>>>a3

matrix([[2],

[5],

[6]])

>>>a4=sum(a1[1,:]) #计算第一行所有列的和,这里得到的是一个数值

>>>a4

5#第0行:1+1;第2行:2+3;第3行:4+2

计算最大、最小值和索引

>>>a1.max() #计算a1矩阵中所有元素的最大值,这里得到的结果是一个数值

4

>>>a2=max(a1[:,1]) #计算第二列的最大值,这里得到的是一个1*1的矩阵

>>>a2

matrix([[3]])

>>>a1[1,:].max() #计算第二行的最大值,这里得到的是一个一个数值

3

>>>np.max(a1,0) #计算所有列的最大值,这里使用的是numpy中的max函数

matrix([[4, 3]])

>>>np.max(a1,1) #计算所有行的最大值,这里得到是一个矩阵

matrix([[1],

[3],

[4]])

>>>np.argmax(a1,0) #计算所有列的最大值对应在该列中的索引

matrix([[2, 1]])

>>>np.argmax(a1[1,:]) #计算第二行中最大值对应在该行的索引

1