减少阵列的分辨率。如果我有一个这样的阵列:通过求和
a = np.array([[ 1, 2, 3, 4],
[ 5 ,6, 7, 8],
[ 9,10,11,12],
[13,14,15,16]])
我想“改变分辨率”,和由2个COLS结束了一个较小的阵列,(比方说2行,或2行×4列等)。我希望通过总结来实现这一决议更改。我需要这个来处理大型数组,行数,较小数组的cols总是大数组的因子。
减少上述阵列2×2阵列将导致(这就是我想要的):
[[ 14. 22.]
[ 46. 54.]]
我有这个功能,做它罚款:
import numpy as np
def shrink(data, rows, cols):
shrunk = np.zeros((rows,cols))
for i in xrange(0,rows):
for j in xrange(0,cols):
row_sp = data.shape[0]/rows
col_sp = data.shape[1]/cols
zz = data[i*row_sp : i*row_sp + row_sp, j*col_sp : j*col_sp + col_sp]
shrunk[i,j] = np.sum(zz)
return shrunk
print shrink(a,2,2)
print shrink(a,2,1)
#correct output:
[[ 14. 22.]
[ 46. 54.]]
[[ 36.]
[ 100.]]
我我已经通过examples看了很长时间,但似乎无法找到任何有用的东西。
有没有更快的方式来做到这一点,而不需要循环?
如果工作正常,您的问题是什么? –
@尼克德克莱因 - 编辑澄清。我追求更快的方法来做到这一点。 – fraxel
想要做这类事情的人往往会使用'itertools'模块,可能值得一看。 – heltonbiker