[英]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.