[英]generate long list (with repetition) of permutations of an array with numpy
我希望能夠生成一個列表(任意長度)的數組,每個數組是一個數組A的隨機排列。
有這個python選項 :
for x in range(n):
random.shuffle(A)
routes.append(A)
但我懷疑用numpy來實現這一目標的程序方法較少。 有什么建議嗎?
考慮這個例子:
In [59]: crr
Out[59]:
array([[0.83704624, 0.42109715, 0.50779425, 0.93753455, 0.11773652,
0.08751938],
[0.83704624, 0.42109715, 0.50779425, 0.93753455, 0.11773652,
0.08751938],
[0.83704624, 0.42109715, 0.50779425, 0.93753455, 0.11773652,
0.08751938],
[0.83704624, 0.42109715, 0.50779425, 0.93753455, 0.11773652,
0.08751938],
[0.83704624, 0.42109715, 0.50779425, 0.93753455, 0.11773652,
0.08751938]])
In [60]: np.random.shuffle(crr[0])
In [61]: crr
Out[61]:
array([[0.42109715, 0.50779425, 0.93753455, 0.11773652, 0.08751938,
0.83704624],
[0.83704624, 0.42109715, 0.50779425, 0.93753455, 0.11773652,
0.08751938],
[0.83704624, 0.42109715, 0.50779425, 0.93753455, 0.11773652,
0.08751938],
[0.83704624, 0.42109715, 0.50779425, 0.93753455, 0.11773652,
0.08751938],
[0.83704624, 0.42109715, 0.50779425, 0.93753455, 0.11773652,
0.08751938]])
由於隨機shuffle就位,這里我們只能指定要洗牌的第一行。 因此,如果您使用np.repeat
或np.tile
重復A次N次並將結果重新crr
為像此處的crr
這樣的2D數組,則可以執行此操作以達到最終目標:
In [69]: for v in crr:
...: np.random.shuffle(v)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.