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

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

如何使用numpy進(jìn)行元素明智的矩陣乘法

如何使用numpy進(jìn)行元素明智的矩陣乘法

我有兩個(gè) numpy 數(shù)組,a 大?。?0*3*3)和 b 大?。?*3)。設(shè) a=(a1, a2, ..., a20)。我想像這樣計(jì)算矩陣乘積元素:c=(c1, c2, ..., c20), ci=bT ai b, i=1~20。如何使用 numpy 有效地做到這一點(diǎn)?使用 for 循環(huán)的慢版本是這樣的:a = np.random.sample((20, 3, 3))b = np.random.sample((3, 3))c = np.zeros_like(a)for i0, ai in enumerate(a):    c[i0] = np.dot(b.T, np.dot(ai, b))
查看完整描述

2 回答

?
守著星空守著你

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

您可以將操作置于矢量化形式中,因?yàn)槟妮斎胧?NumPy 數(shù)組。不需要顯式for循環(huán)和索引。


PS:感謝@yatu 發(fā)現(xiàn)答案形狀不一樣?,F(xiàn)在我添加了swapaxes以獲得一致的答案作為 OP 的方法


np.random.seed(1)


a = np.random.sample((4, 3, 3))

b = np.random.sample((3, 3))


c = np.dot(b.T, np.dot(a, b)).swapaxes(0,1)

print (c)

[[[0.96496962 1.30807122 0.55382266]

  [1.42300972 1.98975139 0.81871374]

  [0.32358338 0.45493059 0.1346777 ]]


 [[1.46772447 2.15650254 0.87555186]

  [2.26335921 3.33689922 1.28679305]

  [0.71561413 0.96507585 0.54309736]]


 [[1.50660527 2.36946435 0.59771395]

  [2.49705244 3.76328176 1.06274954]

  [0.96090846 1.43636151 0.31807679]]


 [[1.03706878 1.94107476 0.61884642]

  [1.74739926 3.07419808 1.03537019]

  [0.59565039 1.09721382 0.37283626]]]


查看完整回答
反對(duì) 回復(fù) 2021-10-26
?
富國滬深

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

你可以試試np.matmul(b.T, np.dot(a,b)):


import numpy as np

import pandas as pd


a = np.random.sample((4, 3, 3))

b = np.random.sample((3, 3))

c = np.zeros_like(a)


# using for loop

for i0, ai in enumerate(a):

    c[i0] = np.dot(b.T, np.dot(ai, b))


# alternative method

e = np.zeros_like(a)

e = np.matmul(b.T, np.dot(a,b))


# checking for equal

print(np.array_equal(c, e))


查看完整回答
反對(duì) 回復(fù) 2021-10-26
  • 2 回答
  • 0 關(guān)注
  • 219 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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