对 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
确保所有变量的维度都正确。
我有一个像这样的 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
确保所有变量的维度都正确。