亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將點積應用于 3D 數組中的所有列

將點積應用于 3D 數組中的所有列

jeck貓 2021-12-29 19:54:36
我有一個 3D 數組,我需要在一個方向上進行轉換。我有一個矩陣map_y,其中包含我使用np.dot. 是否可以避免for下面代碼中的嵌套循環?import numpy as npnx, ny, nz = 64, 32, 24nyc = 11a = np.random.rand(nz, ny, nx)ac = np.empty((nz, nyc, nx))map_y = np.random.rand(nyc, ny)# Can we do this in a single numpy function?for k in range(nz):    for i in range(nx):        ac[k,:,i] = np.dot(map_y, a[k,:,i])
查看完整描述

1 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

使用np.einsum-


ac = np.einsum('ijk,lj->ilk',a,map_y)

einsum關于這個問題的一些解釋:


軸可以被認為是示意性的,就像這樣 -


a      : i      x j x k

map_y  :     l  x j

output : i x l      x k

因此,j對輸出進行了對齊和總和減少,而其余部分是“spear-out”,為我們提供了所需的輸出。


有關更多信息,請參閱鏈接的文檔。


此外,通過將optimize標志np.einsum設置為True使用 BLAS 來處理標志。


查看完整回答
反對 回復 2021-12-29
  • 1 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號