【发布时间】:2018-05-07 15:36:25
【问题描述】:
我需要创建一个由 0 到 N 随机打乱的数字组成的 N x M numpy 数组。也就是说,矩阵的每一行都具有随机顺序中的每个数字 0 到 N 中的一个,没有重复元素,并且每个表示数字。
到目前为止我能想到的最好的是(对于 N = 10 和 M = 5)
import random
import numpy as np
a = np.array([random.sample(range(10), 10) for x in range(5)])
这给了我
[[5 9 1 3 8 2 6 4 0 7]
[4 8 5 2 9 3 7 6 0 1]
[8 4 6 7 9 2 0 5 1 3]
[3 5 4 9 2 0 6 7 1 8]
[6 0 4 7 3 2 1 8 5 9]]
我当前的解决方案确实有效,但如果可能的话,我只想拥有一个随机库(我在其他地方使用 numpy,因此只有 numpy 的解决方案是理想的)。我假设 numpy 有一个更简单的方法来做到这一点,但我目前正在想念它。
【问题讨论】:
-
import numpy as np, 当然.... 然后... np.random.randint(0, 10, size=(5, 10))
-
@JohnColeman 这是我最初的想法,但我不确定如何创建数组以使其具有相同的随机 0->N 但顺序不同
-
编辑您的问题以反映这一点
-
它不会减少您需要进行的库调用次数,但
a = np.array([np.random.permutation(10) for _ in range(5)])可能会更干净。 -
感谢@Divakar,这是一个完美的答案。我猜我在挖掘时没有找到正确的搜索词
标签: python python-3.x numpy random