我有一个3 × 3的numpy.ndarray
,即H,和一个M × N × 3的numpy.ndarray
,即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]
,它们是向量元素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]]])