我目前有以下R代码:
m <- matrix(NA, nrow = 9, ncol = 9)
for (i in 1:9){
m[i,] <- sample(9)
}
我是Python的新手,我希望重现此内容,但是每列中有1到9个随机样本,每行和每行都没有重复。谁能向我展示正确的路线?
答案 0 :(得分:0)
您可以使用python的numpy库。
from numpy.random import randint
low = 1
high = 10
nrow = 9
ncol = 9
m = randint(low,high,size = (nrow,ncol))
print(m)
[[9 9 1 3 4 1 7 9 1]
[8 1 2 9 1 6 5 6 1]
[2 5 8 7 6 8 4 6 8]
[7 1 8 7 4 8 1 3 2]
[9 1 8 7 6 3 4 7 4]
[5 8 2 4 5 9 8 6 3]
[9 9 7 6 5 5 9 8 2]
[3 3 5 5 3 1 8 9 5]
[2 9 5 6 5 9 6 7 9]]
这将创建一个具有9行9列的numpy矩阵,其中将包含间隔为[low,high)的随机整数
您可以在以下位置查看该功能的手册: https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.random.randint.html
如果您希望每行都有唯一的值,则可以使用以下方法:
import numpy as np
m = np.zeros((9,9))
vals = np.arange(1,10)
for i in range(0,9):
m[i,:] = np.random.choice(vals,size=9,replace=False)
print(m.astype(int))
[[8 9 4 3 6 1 7 5 2]
[1 3 8 6 9 2 7 5 4]
[4 1 9 6 8 2 7 5 3]
[7 8 6 3 5 2 9 1 4]
[3 8 7 9 5 4 2 1 6]
[1 2 5 8 7 3 4 6 9]
[8 5 4 9 1 3 6 7 2]
[8 4 9 6 1 5 3 2 7]
[3 2 4 5 6 1 8 9 7]]
要对每列执行相同操作,可以将for循环更改为此:
for i in range(0,9):
m[:,i] = np.random.choice(vals,size=9,replace=False)