Numpy применить операцию к каждому элементу матрицы для каждого элемента матрицы? - PullRequest
0 голосов
/ 18 апреля 2020

Название может быть немного запутанным. Я хочу сделать это:

output = []
x = np.asarray([[1,2,3],[2,3,4]])
y = np.asarray([[5,6,7],[7,8,9]])
for i in x:
    output.append(np.linalg.norm(i-y, axis = 0))

Однако, мои x, y очень большие, поэтому мне нужно ускорить его, применив больше векторизации. Любые предложения?

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

1 Ответ

0 голосов
/ 18 апреля 2020

Вычтите y, переданное из i и возьмите фроберниус из полученного массива, как вы делали:

np.linalg.norm((x - y[:,None]), axis=0)

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