创建任意大小的矩阵,其中行总和为0
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建任意大小的矩阵,其中行总和为0相关的知识,希望对你有一定的参考价值。
从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)
它接近零,但从不总和为零=(
答案
您要从自身中减去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,但这会让你接近。
我希望有所帮助!
以上是关于创建任意大小的矩阵,其中行总和为0的主要内容,如果未能解决你的问题,请参考以下文章