我被 numpy 中的矩阵困住了。 我需要创建矩阵,其中各列的总和不大于 1。
np.random.rand(3,3).round(2)
给出
array([[ 0.48, 0.73, 0.81],
[ 0.4 , 0.01, 0.32],
[ 0.44, 0.4 , 0.92]])
有没有一种聪明的方法来生成带有随机数的矩阵,其中每列的总和不大于一? 谢谢!
最佳答案
你可以这样做:
x = np.random.rand(3,3)
x /= np.sum(x, axis=0)
这背后的基本原理是您将每一列除以所有值的总和。这确保所有列都会加到 1。
或者,你可以这样做:
x = np.random.rand(3,3)/3
因为每个数字都在[0,1]之间。如果将域压缩为 [0,1/3],则总和保证为 <1。
当您想要对数字进行限制但仍然希望它们是随机的时,通常不清楚您的意思。
关于python - 随机矩阵,各列值的总和不大于 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50107205/