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

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

np.meshgrid 的這個(gè) for 循環(huán)計(jì)算可以矢量化嗎?

np.meshgrid 的這個(gè) for 循環(huán)計(jì)算可以矢量化嗎?

我的代碼中有一個(gè)部分,我通過一個(gè)循環(huán),將應(yīng)用于一片的for結(jié)果分配到一個(gè)占位符中,如下所示:np.meshgridmy_arrayres_arrayp = 360; q = 50; r = 50my_array   =  np.random.rand(p, q, 2)res_array  = np.zeros((p,q,r), dtype=np.float32)for i in range(p):   x, x_ = np.meshgrid(my_array[i,:,0], my_array[i,:,0])   res_array[i] = (x_-x)我的代碼中還有幾個(gè)類似的操作,我必須運(yùn)行我的代碼數(shù)千次。因此速度成為一個(gè)問題。我在想,如果我可以不用循環(huán)的話,我可以在這里節(jié)省一些時(shí)間for,但是我自己做不到。如果沒有 for 循環(huán),該怎么做?編輯歷史:請(qǐng)注意,my_array[i,:,1]在上面顯示的代碼片段中沒有使用。同樣,我my_array[i,:,1]在另一個(gè)代碼塊中使用(此處未顯示,但類似循環(huán))。這就是我所說的“我的代碼中還有一些類似的操作......”
查看完整描述

2 回答

?
慕妹3146593

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

您可以將 np.meshgrid 重寫為更快的低級(jí) numpy 操作:


p = 360; q = 50; r = 50

my_array   =  np.random.rand(p, q, 2)

res_array  = np.zeros((p,q,r), dtype=np.float32)

for i in range(p):

    x = my_array[None,i,:,0].repeat(q, axis=0).reshape(q, q)

    y = my_array[None,i,:,0].repeat(q, axis=1).reshape(q, q)

    res_array[i] = y - x

這段代碼在我的機(jī)器上快了 2 倍。 Numba@njit可用于加速上述代碼(再次快 3 倍),但使用它可以實(shí)現(xiàn)更高效的實(shí)現(xiàn)。這里是:


@njit(parallel=True)

def fasterImpl(my_array, p, q, r):

    res_array = np.zeros((p, q, r))

    for i in prange(p):

        for j in range(q):

            for k in range(r):

                res_array[i,j,k] = my_array[i,j,0] - my_array[i,k,0]

    return res_array


p = 360; q = 50; r = 50

my_array   = np.random.rand(p, q, 2)

res_array  = fasterImpl(my_array, p, q, r)

這個(gè)最終實(shí)現(xiàn)比我機(jī)器上的原始實(shí)現(xiàn)快 29 倍!


查看完整回答
反對(duì) 回復(fù) 2023-04-18
?
臨摹微笑

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

你可以這樣做:


my_array   =  np.random.rand(p, q, 2)

res_array = np.array([x[1]-x[0] for x in [np.meshgrid(my_array[i,:,0], my_array[i,:,0]) for i in range(p)]], np.float32).reshape(p,q,r)

但是比你花的時(shí)間多。


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

添加回答

舉報(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)