Как суммировать массив из одного столбца с другим массивом (столбец за столбцом)? - PullRequest
1 голос
/ 03 августа 2020

Приведенный ниже код позволяет мне добавить вектор в каждую строку данной матрицы, используя Numpy:

import numpy as np
m = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
v = np.array([1, 1, 0])
print("Original vector:")
print(v)
print("Original matrix:")
print(m)
result = np.empty_like(m) 
for i in range(4):
  result[i, :] = m[i, :] + v
print("\nAfter adding the vector v to each row of the matrix m:")
print(result)

Как мне выполнить аналогичную операцию сложения, но по столбцу? Я пробовал следующее:

import numpy as np
array1 = np.array([[5,5,3],[2,2,3]])
print(array1)
addition = np.array([[1],[1]])
print(addition)
for i in range(3):
    array1[:,i] = array1[:,i] + addition
print(array1)

Однако я получаю следующую ошибку вещания:

ValueError: could not broadcast input array from shape (2,2) into shape (2)

Ответы [ 2 ]

2 голосов
/ 03 августа 2020

Просто сопоставьте количество измерений, numpy передаст массивы по мере необходимости. В первом примере это должно быть:

result = m + v.reshape((1, -1))

Во втором примере сложение уже 2D, поэтому будет просто:

array1 + addition
0 голосов
/ 03 августа 2020

Вы также можете добавить измерение с помощью синтаксиса Numpy None, а затем выполнить добавление:

array1 += addition[:,None]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...