在python的矩阵(1,2,3)
中随机放置数字[10, 10]
的最佳方法是什么?
我希望看到
1 = 20 times
2 = 30 times
3 = 50 times
答案 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