rbt*_*ess 5 python arrays numpy
我希望能够生成一个(任意长度)数组列表,每个数组都是一个数组 A 的随机排列。
for x in range(n):
random.shuffle(A)
routes.append(A)
Run Code Online (Sandbox Code Playgroud)
但我怀疑使用 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]])
Run Code Online (Sandbox Code Playgroud)
由于随机洗牌是就地进行的,因此这里我们只能指定要洗牌的第一行。因此,如果您使用np.repeat
ornp.tile
重复 A N 次并将结果重新整形为二维数组,如下所示crr
,您可以这样做以达到最终目标:
In [69]: for v in crr:
...: np.random.shuffle(v)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
147 次 |
最近记录: |