python - 随机矩阵,各列值的总和不大于 1

标签 python numpy matrix

我被 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/

相关文章:

python - 如何在 Go 中实现 DllMain 入口点

python - Python中对称数组的排列

Python - 返回给定纬度和经度的美国州名

Python 中多变量迭代的 C# 模拟?

python - 将整数 pandas 数据帧列编码为填充的 16 位二进制

python - 使用numpy数组时如何处理itertools.product?

c++ - 将文本文件读入矩阵

python - 在 python 中将下三角矩阵的索引作为一维列表的快速方法

matlab - 用多项式展开矩阵

python - CV2 : Import Error in Python OpenCV