我想生成一个数组列表(任意长度),每个数组都是数组A的随机排列。this question:
A
for x in range(n): random.shuffle(A) routes.append(A)
如何有效地使用NumPy?
eufgjt7s1#
请考虑以下示例:
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 是就地进行的,因此我们可以只指定要 Shuffle 的第一行。因此,如果您使用np.repeat或np.tile重复N次A,并将结果整形为2D数组,如crr,您可以这样做以达到最终目标:
np.repeat
np.tile
crr
In [69]: for v in crr: ...: np.random.shuffle(v)
w6lpcovy2#
np.random.permutation怎么样?举例来说:
np.random.permutation
A = np.array([0, 1, 2, 3, 4]) n = 17 # list length x = [np.random.permutation(A) for i in range(n)]
我不认为可以避免在n迭代中循环的过程方面,但如上面的代码片段所示:
n
random
2条答案
按热度按时间eufgjt7s1#
请考虑以下示例:
由于随机 Shuffle 是就地进行的,因此我们可以只指定要 Shuffle 的第一行。因此,如果您使用
np.repeat
或np.tile
重复N次A,并将结果整形为2D数组,如crr
,您可以这样做以达到最终目标:w6lpcovy2#
np.random.permutation
怎么样?举例来说:我不认为可以避免在
n
迭代中循环的过程方面,但如上面的代码片段所示:np.random.permutation
以避免使用random
包