python矩陣點(diǎn)乘函數(shù),python的矩陣乘法

python實(shí)現(xiàn)矩陣乘法的方法

python實(shí)現(xiàn)矩陣乘法的方法

創(chuàng)新互聯(lián)建站從2013年成立,先為桐柏等服務(wù)建站,桐柏等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為桐柏企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

本文實(shí)例講述了python實(shí)現(xiàn)矩陣乘法的方法。分享給大家供大家參考。

具體實(shí)現(xiàn)方法如下:

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)

print "-"*90

print matrixMul2(a,b)

print matrixMul2(b,a)

print "-"*90

from numpy import dot

print map(list,dot(a,b))

print map(list,dot(b,a))

#Out:

#[[11, 14, 17, 20], [23, 30, 37, 44], [35, 46, 57, 68], [47, 62, 77, 92]]

#[[50, 60], [114, 140]]

#------------------------------------------------------------------------

#[[11, 14, 17, 20], [23, 30, 37, 44], [35, 46, 57, 68], [47, 62, 77, 92]]

#[[50, 60], [114, 140]]

#------------------------------------------------------------------------

#[[11, 14, 17, 20], [23, 30, 37, 44], [35, 46, 57, 68], [47, 62, 77, 92]]

#[[50, 60], [114, 140]]

希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。

求問(wèn)如何在python中實(shí)現(xiàn)矩陣的點(diǎn)乘緋yth

python3.5引入了一個(gè)新的語(yǔ)法@來(lái)表示矩陣乘法,但標(biāo)準(zhǔn)庫(kù)內(nèi)并沒(méi)有使用它的地方,numpy中可以使用。

python里x=randn mat=x.T.dot 是求什么

x=randn這個(gè)寫(xiě)法是不對(duì)的。

randn是numpy里的一個(gè)生成隨機(jī)array的函數(shù)。

比如說(shuō)要生成一個(gè)三行兩列的隨機(jī)array,可以這樣寫(xiě):

import numpy

x = numpy.random.randn(3,2)

像這樣:

后面這個(gè)mat=x.T.dot(...)是先求這個(gè)3*3矩陣的轉(zhuǎn)置(.T),再求與點(diǎn)積(.dot)

點(diǎn)積就是矩陣各個(gè)對(duì)應(yīng)元素相乘, 這個(gè)時(shí)候要求兩個(gè)矩陣必須同樣大小。

其實(shí)可以分步來(lái)的,就知道做了什么運(yùn)算了。

像這樣:

dot(2)是點(diǎn)乘常數(shù)就不說(shuō)了,

那個(gè)x.T.dot([1,2,3])就是x.T的

1*1+2*2+3*3=14

2*1+3*2+4*3=20

懂了木有 =。=

在python3里怎么實(shí)現(xiàn)兩個(gè)矩陣相乘

def mmult(a,b):

zip_b = zip(*b)

return [[sum(ele_a*ele_b for ele_a, ele_b in zip(row_a, col_b))

for col_b in zip_b] for row_a in a]

x = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]

y = [[1,2],[1,2],[3,4]]

print(mmult(x,y))

或者可以直接用numpy

import numpy as np # I want to check my solution with numpy

mx = np.matrix(x)

my = np.matrix(y)

print(mx * my)

網(wǎng)站題目:python矩陣點(diǎn)乘函數(shù),python的矩陣乘法
分享鏈接:http://muchs.cn/article8/hcgsip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、搜索引擎優(yōu)化、建站公司微信小程序、網(wǎng)站內(nèi)鏈、網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)