如何在矩阵中随机放置数字?

时间:2018-06-09 13:47:19

标签: python

在python的矩阵(1,2,3)中随机放置数字[10, 10]的最佳方法是什么?

我希望看到

1 = 20 times
2 = 30 times
3 = 50 times

3 个答案:

答案 0 :(得分:1)

这里的原则是创建一个列表/数组,其值显示设定次数,对该列表/数组进行混洗,然后重新整形。

生成数据的起点:

a = [1 for x in range(20)]
b = [2 for x in range(30)]
c = [3 for x in range(50)]

full_array = a + b + c

纯python方法可能会使用稍微适应的this

import random

def chunks(l, n):
    n = max(1, n)
    return [l[i:i+n] for i in range(0, len(l), n)]

random.shuffle(full_array)
matrix = chunks(full_array, 10)

如果您使用numpy,事情会变得更容易:

import numpy as np

full_array = np.array(full_array)
np.random.shuffle(full_array)

matrix = full_array.reshape(10, 10)

答案 1 :(得分:0)

我认为一个单行确实存在。但在此之前,这应该有效。

import numpy as np
temp=np.hstack((np.array([1]*20), np.array([2]*30), np.array([3]*50)))
np.random.shuffle(temp)
temp=temp.reshape(10, 10)
print(temp)

答案 2 :(得分:-1)

也许最好的选择是使用numpy [1]

np.random.randint(5, size=(2, 4))

[1] https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.randint.html