创建任意大小的矩阵,其中行总和为0

时间:2018-12-27 02:35:46

标签: python numpy matrix determinants

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)

它接近于零但从不加零=(

1 个答案:

答案 0 :(得分:0)

您要从自身中减去x的平均值以创建z,这将为您提供一个总和为0的矩阵。要使行的总和为零,您必须从其中的每个元素中减去一行的平均值。该行。

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

此代码查找列的平均值并减去它们,因为从2D数组中减去1D数组时,将从每一行中减去1D数组。这样就得到了一个矩阵,其列的总和为零,因此转置得到了一个矩阵,其行的总和为零。

正如泰勒·陈(Tyler Chen)所述,由于舍入误差,您不会得到精确的0,但这会使您接近。

希望对您有帮助!