python - 生成一个数组,每行和列中包含1到9的随机数

问题描述 投票:1回答:1

我目前有以下R代码:

m <- matrix(NA, nrow = 9, ncol = 9)
for (i in 1:9){
  m[i,] <- sample(9)
}

我是Python的新手,我希望重现这一点,但是每列中的1到9个随机样本没有重复,也没有重复。任何人都可以向我展示这条线路吗?

python r
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.