在 numpy python 2.7 中制作图像数组
Making an array of images in numpy python 2.7
我想要一组图像。例如,我有一个 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 (most recent call
last)
in ()
6 V.shape
7
----> 8 np.dot(np.transpose(V), imslice)
9
ValueError: shapes (6,4) and (4,178,178,3) not aligned: 4 (dim 1) !=
178 (dim 2)
np.dot
和 np.matmul
都将二维以上的数组视为矩阵堆栈,因此最后一个和最后一个维度必须匹配。
针对您的情况,一个简单的解决方法是转置:
np.dot(imslice.T, V).T
如果您需要更灵活的东西,np.einsum
:
np.einsum('ji,jklm', V, imslice)
我想要一组图像。例如,我有一个 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 (most recent call last)
in ()
6 V.shape
7
----> 8 np.dot(np.transpose(V), imslice)
9
ValueError: shapes (6,4) and (4,178,178,3) not aligned: 4 (dim 1) != 178 (dim 2)
np.dot
和 np.matmul
都将二维以上的数组视为矩阵堆栈,因此最后一个和最后一个维度必须匹配。
针对您的情况,一个简单的解决方法是转置:
np.dot(imslice.T, V).T
如果您需要更灵活的东西,np.einsum
:
np.einsum('ji,jklm', V, imslice)