创建行和为0的任意大小的矩阵

2024-04-20 06:37:29 发布

您现在位置:Python中文网/ 问答频道 /正文

Creating a matrix of arbitrary size where rows sum to 1?开始,我们可以简单地通过将矩阵中的每个值除以所有值的总和来规范化这些值,以确保其总和为1。你知道吗

例如:

cols, rows = 5, 5
matrix = np.random.rand(rows, cols)
matrix/matrix.sum(axis=1)[:,None]

如何创建行和为0的任意大小的矩阵?

我试过:

cols, rows = 5, 5
x = np.random.rand(rows, cols)
z = x - sum(sum(x)) / (rows*cols)

它是一个接近于零的数字,但从不求和


Tags: oftocreatingsizenp矩阵randomwhere
1条回答
网友
1楼 · 发布于 2024-04-20 06:37:29

你从x的平均值中减去x来创建z,这将得到一个和为0的矩阵。要使行和为零,必须从行中的每个元素中减去行的平均值。你知道吗

cols, rows = 5, 5
x = np.random.rand(rows, cols)
z = (x - np.average(x,axis=0)).T

此代码查找列的平均值并将其相减,因为当从2D数组中减去一维数组时,将从每行中减去一维数组。这就得到了一个列和为零的矩阵,因此换位得到了一个行和为零的矩阵。你知道吗

正如Tyler Chen提到的,由于舍入误差,您不会得到精确的0,但这将使您接近。你知道吗

我希望这有帮助!你知道吗

相关问题 更多 >