2D 数组与 3D 数组中的每个向量之间的 Numpy 矩阵乘法
Numpy matrix multiplication between a 2D array and each vector in 3D array
我有一个 3 x 3 numpy.ndarray
,即 H,和一个 M x N x 3 numpy.ndarray
,即 A.
我想做的是将 H 与 A 中的每个 向量 相乘。
import numpy as np
H = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]) # 3 x 3 matrix
A = np.array([[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]],
[[10, 11, 12],
[13, 14, 15],
[16, 17, 18]]]) # 2 x 3 x 3 matrix
例如,在上面的代码中,我想在H和[1, 2, 3]
、[4, 5, 6]
、...、[16, 17, 18]
之间应用矩阵和向量乘法,它们是向量元素 of A.
因此,结果将是
np.array([[[14, 32, 50], # H @ A[0, 0]
[32, 77, 122], # H @ A[0, 1]
[50, 122, 194]], # H @ A[0, 2]
[[68, 167, 266], # H @ A[1, 0]
[86, 212, 338], # H @ A[1, 1]
[104, 257, 410]]] # H @ A[1, 2]
)
当我广播H @ A
时,应用了H @ A[0]
和H @ A[1]
,这不是我所期望的。
有没有办法按照我想要的方式播放?
您可以使用 @
运算符:
A @ H.T
array([[[ 14, 32, 50],
[ 32, 77, 122],
[ 50, 122, 194]],
[[ 68, 167, 266],
[ 86, 212, 338],
[104, 257, 410]]])
我有一个 3 x 3 numpy.ndarray
,即 H,和一个 M x N x 3 numpy.ndarray
,即 A.
我想做的是将 H 与 A 中的每个 向量 相乘。
import numpy as np
H = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]) # 3 x 3 matrix
A = np.array([[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]],
[[10, 11, 12],
[13, 14, 15],
[16, 17, 18]]]) # 2 x 3 x 3 matrix
例如,在上面的代码中,我想在H和[1, 2, 3]
、[4, 5, 6]
、...、[16, 17, 18]
之间应用矩阵和向量乘法,它们是向量元素 of A.
因此,结果将是
np.array([[[14, 32, 50], # H @ A[0, 0]
[32, 77, 122], # H @ A[0, 1]
[50, 122, 194]], # H @ A[0, 2]
[[68, 167, 266], # H @ A[1, 0]
[86, 212, 338], # H @ A[1, 1]
[104, 257, 410]]] # H @ A[1, 2]
)
当我广播H @ A
时,应用了H @ A[0]
和H @ A[1]
,这不是我所期望的。
有没有办法按照我想要的方式播放?
您可以使用 @
运算符:
A @ H.T
array([[[ 14, 32, 50],
[ 32, 77, 122],
[ 50, 122, 194]],
[[ 68, 167, 266],
[ 86, 212, 338],
[104, 257, 410]]])