簡體   English   中英

如何在特定軸上隨機打亂 numpy 3D 陣列中的塊

[英]How to randomly shuffle blocks in numpy 3D array on particular axis

我有一個 3D numpy 數組,我想在特定軸上按塊進行隨機播放,同時將該塊中的數據保留在原始 state 中。 例如,我有一個形狀為 (50, 140, 23) 的 np 數組,我想通過在軸 = 1 上制作 (50, 1, 23) 的塊來進行洗牌。 因此將創建 140 個塊,並且應在軸 = 1 上對塊進行洗牌,同時將塊中的數據保持其原始順序。 我閱讀了有關np.random.shuffle(x)的文檔,但這只會在第一個軸上隨機播放,我們無法為其提供塊大小。 numpy 中是否有任何 function 或快速方法?

您可以使用隨機排列:

A = sum(np.ogrid[0:0:50j,:140,0:0:23j])
rng = np.random.default_rng()
Ashuff = A[:,rng.permutation(140),:]

也許交換軸,洗牌和交換可能對你有用?

a = np.random.random((50,140,23))
b = np.swapaxes(a, 0, 1)
np.random.shuffle(b)
c = np.swapaxes(b, 0, 1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM