來排列一維數組A
我知道,你可以運行下面的代碼:應用相同的置換,每行中的2D numpy的陣列
import numpy as np
A = np.random.permutation(A)
我有一個二維數組,並希望應用完全一樣的排列用於數組的每一行。你有什麼方法可以指定numpy爲你做這個嗎?
來排列一維數組A
我知道,你可以運行下面的代碼:應用相同的置換,每行中的2D numpy的陣列
import numpy as np
A = np.random.permutation(A)
我有一個二維數組,並希望應用完全一樣的排列用於數組的每一行。你有什麼方法可以指定numpy爲你做這個嗎?
生成列A中的數量和索引的A
列隨機排列,像這樣 -
A[:,np.random.permutation(A.shape[1])]
採樣運行 -
In [100]: A
Out[100]:
array([[3, 5, 7, 4, 7],
[2, 5, 2, 0, 3],
[1, 4, 3, 8, 8]])
In [101]: A[:,np.random.permutation(A.shape[1])]
Out[101]:
array([[7, 5, 7, 4, 3],
[3, 5, 2, 0, 2],
[8, 4, 3, 8, 1]])
這取決於你的意思是在每一行什麼。
如果您想排列所有值(不管行和列),請將您的數組重新排列爲1d,排列,重新排列成2d。
如果你想排列每一行,但不是在不同的列之間洗牌,你需要循環通過一個軸並調用排列。
for i in range(len(A)):
A[i] = np.random.permutation(A[i])
它可能會做得更短些,但這是如何做到的。
其實你並不需要這樣做,從documentation:
如果x是一個多維數組,它只是沿着它的第一個 指數洗牌。
所以,服用Divakar的數組:
a = np.array([
[3, 5, 7, 4, 7],
[2, 5, 2, 0, 3],
[1, 4, 3, 8, 8]
])
,你可以這樣做:np.random.permutation(a)
和得到的東西,如:
array([[2, 5, 2, 0, 3],
[3, 5, 7, 4, 7],
[1, 4, 3, 8, 8]])
附:如果您需要執行列置換 - 只需執行np.random.permutation(a.T).T
。類似的東西適用於多暗數組。
對不起,我不太清楚。 每行應該具有與應用排列之前相同的一組元素,但是排列每行中元素的方式應該是相同的。因此,如果位置0中的元素到達位置4,則每行都應該發生相同的情況。 – jsguy
換句話說,你想排列A的列? –