(x,y,1) * (x,y) 的逐元素乘法

Element-wise Multiplication of (x,y,1) * (x,y)

matrixADimensions = matrixA.shape # returns [901,1249,1]
matrixBDimensions = matrixB.shape # returns [901,1249]

我正在尝试对 matrixA 和 matrixB 进行逐元素乘法运算,但出现错误 ValueError: operands could not be broadcast together with shapes (901,1249,1) (901,1249)

我认为这与两个矩阵的维度有关,因为它们不相同。实际上,从技术上讲,它们是相同的,因为 [901,1249,1][901,1249] 相同,但 Python 似乎不知道这一点。

如何将矩阵 A 与矩阵 B 相乘?

您可以使用 numpy.squeeze 从数组形状中删除 single-dimensional 个条目。所以在你的情况下,你会这样做:

import numpy as np

np.squeeze(matrixA) * matrixB

这样做的好处是不需要知道 single-dimensional 条目在数组形状中的位置(与采用 matrixA[:,:,0] 等索引方法不同)。