簡體   English   中英

生成具有numpy的數組排列的長列表(重復)

[英]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.repeatnp.tile重復A次N次並將結果重新crr為像此處的crr這樣的2D數組,則可以執行此操作以達到最終目標:

In [69]: for v in crr:
    ...:     np.random.shuffle(v)

暫無
暫無

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

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