第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在python中執(zhí)行置換矩陣乘法?

如何在python中執(zhí)行置換矩陣乘法?

素胚勾勒不出你 2022-11-01 16:58:41
置換矩陣 A 和 B 是方陣,每行僅包含一個(gè) 1。所有行都是唯一的。我已經(jīng)添加了我的第一次嘗試作為答案。我希望有人有更快的解決方案。def permmult(a, b):    """Multiply two permutation matrices.     a,b: lists of positive integers and zero."""    c = []    for row in a:        c.append(b[-row])    return c
查看完整描述

3 回答

?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊

置換矩陣是一個(gè)很好的數(shù)學(xué)概念,但它們不是您以編程方式處理向量中元素重新排序的方式(除非您嘗試使用 numpy 做一些特殊的事情)。


從重新排序的索引的向量 (K) 創(chuàng)建置換矩陣 (P) 可以這樣完成:


def pMatBuild(A):

    return [ [int(a==b) for b in range(len(A))] for a in A ]


K = [0,3,1,4,2]

P = pMatBuild(K)

輸出:


for line in P: print(line)


[1, 0, 0, 0, 0]

[0, 0, 0, 1, 0]

[0, 1, 0, 0, 0]

[0, 0, 0, 0, 1]

[0, 0, 1, 0, 0]

將此置換矩陣應(yīng)用于另一個(gè)向量(即相乘)可以這樣完成:


def pMatApply(P,V):

    return [ V[row.index(1)] for row in P ] # inefficient lookup of 1 on each row

輸出:


V = "ABCDE"    

print(pMatApply(P,V))


['A', 'D', 'B', 'E', 'C']

但是,在代碼中,比置換矩陣更有效的是使用原始索引向量 K:


V = "ABCDE"

print([V[i] for i in K])

['A', 'D', 'B', 'E', 'C']


查看完整回答
反對(duì) 回復(fù) 2022-11-01
?
紫衣仙女

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊

如果不是更快,這會(huì)更短:

def permmult(a,b):
    return [b[-r] for r in a]



查看完整回答
反對(duì) 回復(fù) 2022-11-01
?
楊魅力

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊

迄今為止我取得的最好成績(jī)...


def permmult(a, b):

    """Multiply two permutation matrices.


     a,b: lists of positive integers and zero."""

    c = []

    for row in a:

        c.append(b[-row])

    return c


查看完整回答
反對(duì) 回復(fù) 2022-11-01
  • 3 回答
  • 0 關(guān)注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)