1

我想要一组图像。例如,我将有一个 4x1 数组(下面称为 imslice),其中每个元素都是一个 nxnx3 图像。

我想这样做是为了对我的 imslice 矩阵进行矩阵运算,就像它是一个普通矩阵一样。例如,将它乘以一个常规的 2x2 矩阵(称为 V)。当我现在尝试执行此操作时,我得到一个 5 维数组,当我尝试将它乘以我的 V 矩阵时,我得到的错误是尺寸不一致(即使在数学上很好,因为内部尺寸一致。)

代码:

imslice = np.array(([imslice1q, imslice2q, imslice3q, imslice4q]))

print imslice.shape


V = mh.gen_vmonde(4, 2, 1)

V.shape

C = np.dot(np.transpose(V), imslice)

------------------------------------------------------- ValueError Traceback(最近一次调用最后一次)

在 ()

6 V形

7

----> 8 np.dot(np.transpose(V), imslice)

9

ValueError:形状(6,4)和(4,178,178,3)未对齐:4(dim 1)!= 178(dim 2)

4

1 回答 1

0

两者都np.dotnp.matmul多于二维的数组视为矩阵堆栈,因此最后一个维度和最后一个维度必须匹配。

在您的情况下,一个简单的解决方法是转置:

np.dot(imslice.T, V).T

如果您需要更灵活的东西,有np.einsum

np.einsum('ji,jklm', V, imslice)
于 2018-04-16T00:22:26.027 回答