对 numpy 数组的所有元素应用线性变换

Apply linear transformation to all elements of a numpy array

我有一个像这样的 numpy 数组

============ 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)

但我不知道如何正确编码。请问有人可以提供任何提示吗?

我猜你要找的是 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

确保所有变量的维度都正确。