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

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

如何沿著多維數(shù)組的關(guān)聯(lián)索引將向量元素添加到子數(shù)組的每個元素

如何沿著多維數(shù)組的關(guān)聯(lián)索引將向量元素添加到子數(shù)組的每個元素

ABOUTYOU 2023-10-18 16:09:09
我想知道是否有一種更“numpythonic”或更有效的方法來執(zhí)行以下操作:假設(shè)我有一個A已知長度的一維數(shù)組L,并且有一個多維數(shù)組B,它的維度也有長度L。假設(shè)我想添加(或設(shè)置) 的值B[:, ..., x, ..., :] += A[x]。換句話說,將該值添加到匹配索引 中A[x]的整個子數(shù)組的每個值。Bx一個非常簡單的工作示例是這樣的:A = np.arange(10, 20)B = np.random.rand(3, len(A), 3)for iii in range(len(A)):    B[:, iii, :] += A[iii]顯然,我總是可以像上面那樣循環(huán)遍歷我想要的索引,但我很好奇是否有更有效的方法。如果有一些更常見的術(shù)語來描述這個過程,我也會感興趣,因為我什至很難構(gòu)建適當(dāng)?shù)墓雀杷阉?。我還試圖避免創(chuàng)建與 -vector 形狀相同的新數(shù)組,B并在其他索引上重復(fù)平鋪A-vector ,然后將其添加到B,因為更“真實”的世界應(yīng)用程序可能涉及B相對較大的數(shù)組。
查看完整描述

1 回答

?
HUH函數(shù)

TA貢獻(xiàn)1836條經(jīng)驗 獲得超4個贊

對于您的簡單情況,您可以這樣做:

B[:]?=?A[:,?None]

這是因為廣播才有效。B通過模擬in的尺寸A,您可以明確告訴 numpy 將元素放置在哪里。對于更一般的情況,您想要沿著的A維度放置,您可以執(zhí)行以下操作:kB

B[:]?=?np.expand_dims(A,?tuple(range(A.ndim,?A.ndim?+?B.ndim?-?k)))

np.expand_dims將在您告訴它的索引處添加軸。還有其他方法。例如,您可以A使用B.ndim - k - 1以下實例建立索引None

B[:]?=?A[(slice(None),?*(None,)?*?(B.ndim?-?k?-?1))]

您還可以使用np.reshape來獲取正確形狀的視圖:

B[:]?=?A.reshape(-1,?*np.ones(B.ndim?-?k?-?1,?dtype=int))

或者

B[:]?=?A.reshape(-1,?*(1,)?*?(B.ndim?-?k?-?1))

或者

B[:]?=?A.reshape((-1,)?+?(1,)?*?(B.ndim?-?k?-?1))

在所有這些情況下,您只需要擴(kuò)展 的尾隨維度A,因為這就是廣播的工作原理。由于廣播是 numpy 不可或缺的一部分,因此您只需替換即可=獲得+=預(yù)期結(jié)果。


查看完整回答
反對 回復(fù) 2023-10-18
  • 1 回答
  • 0 關(guān)注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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