Создание матрицы произвольного размера, где сумма строк равна 0 - PullRequest
0 голосов
/ 27 декабря 2018

С Создавая матрицу произвольного размера, в которой строки суммируются в 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 голосов
/ 30 декабря 2018

Вы вычитаете среднее значение x из себя, чтобы создать z, что даст вам матрицу с суммой, равной 0. Чтобы привести строки к сумме, равной нулю, вы должны вычесть среднее значение строки из каждого элемента вэта строка.

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

Этот код находит среднее значение столбцов и вычитает их, как при вычитании 1D массива из 2D массива, 1D массив будет вычитаться из каждой строки.Это дает матрицу, у которой столбцы суммируются с нулем, и, следовательно, транспонирование дает матрицу, у которой строки суммируются с нулем.

Как упоминал Тайлер Чен, вы не получите ровно 0 из-за ошибки округления, но это приблизит вас.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...