这个问题在这里已有答案:
我需要创建一个N×M numpy数组,其随机改组的数字为0到N.也就是说,矩阵的每一行都以随机顺序中的每个数字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有一个更简单的方法来做到这一点,但我现在错过了它 .
1 回答
如果问题只是使用一个随机库(正如你在评论中所说的那样),你可以使用带有参数
replace=False
的numpy.random.choice,这可以确保不重复每个元素: