Python 通过对像素求和来重新缩放矩阵
是否有一种通过简单地添加相邻像素来重新缩放矩阵的快速方法 因此,对于一个Python 通过对像素求和来重新缩放矩阵,python,numpy,matrix,resize,Python,Numpy,Matrix,Resize,是否有一种通过简单地添加相邻像素来重新缩放矩阵的快速方法 因此,对于一个X=N*M矩阵,你会得到一个Y=(N/N)*(N/M),其中N*M是我应该添加像素的区域 我一直在手动(通过脚本)完成这项工作,但我认为一定有办法做到这一点 for i in range(0, X.shape[0]/n): for j in range(0, X.shape[1]/m): Y[i, j] = np.sum(X[i*n:i*n+n, j*m:j*m+m]) 例如 您可以使用函数和以下命
X=N*M
矩阵,你会得到一个Y=(N/N)*(N/M)
,其中N*M
是我应该添加像素的区域
我一直在手动(通过脚本)完成这项工作,但我认为一定有办法做到这一点
for i in range(0, X.shape[0]/n):
for j in range(0, X.shape[1]/m):
Y[i, j] = np.sum(X[i*n:i*n+n, j*m:j*m+m])
例如
您可以使用函数和以下命令对代码进行矢量化:
N
和M
必须分别是N
和M
的整数倍。否则将出现以下错误:
ValueError:块形状
与中的arr\u不兼容
样本运行
In [74]: X
Out[74]:
array([[5, 6, 3, 7],
[5, 0, 3, 0],
[6, 1, 8, 0],
[4, 0, 7, 2]])
In [75]: Y
Out[75]:
array([[16, 13],
[11, 17]])
一种纯粹的方法是将矩阵重塑为更多的轴,并在适当的轴上求和
Y = X.reshape(X.shape[0]/n, n, X.shape[1]/m, m).sum((1, 3))
只是使用了[[1,1],[1,1]]内核的卷积和2像素的过程
In [74]: X
Out[74]:
array([[5, 6, 3, 7],
[5, 0, 3, 0],
[6, 1, 8, 0],
[4, 0, 7, 2]])
In [75]: Y
Out[75]:
array([[16, 13],
[11, 17]])
Y = X.reshape(X.shape[0]/n, n, X.shape[1]/m, m).sum((1, 3))