Применить линейное преобразование ко всем элементам массива NumPy - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть такой пустой массив

============ arr_data
<type 'numpy.ndarray'>
[[ 269.05515748   24.71801578]
 [ 276.96505874   21.72957922]
 [ 198.32475308   19.26596641]
 ...
 [ 158.11078724  -49.91437661]
 [ 219.79342843  -62.06756014]
 [  69.92358315 -166.19385119]]
('arr_data ndim: ', 2)
('         size: ', 413410)
('        shape: ', (206705, 2))
('        dtype: ', dtype('float64'))

Визуализируя это как массив из 206705 векторов (x, y), как я могу применить одно и то же линейное преобразование к каждому из элементов в массиве? ?

Я предполагаю, что это будет матричное умножение с диагональной матрицей 2x2 с последующим добавлением вектора, то есть

   (x', y') = ([a, 0], [0, b])(x, y) + (c, d)

, но я не знаю, как это будет правильно закодировано. Кто-нибудь может предложить какие-нибудь подсказки, пожалуйста?

1 Ответ

1 голос
/ 05 ноября 2019

Полагаю, вы ищете: np.matmul () :

import numpy as np   
a_b = np.array([[a,0],[0,b]])
x_y_new = np.matmul(x_y,a_b) + c_d

Убедитесь, что все переменные имеют правильные размеры.

...