我有一个2d numpy数组(6 x 6)元素。我想用它创建另一个二维数组,其中每个块是块大小窗口中所有元素的平均值。目前,我有福勒。代码:import os, numpy
def avg_func(data, blocksize = 2):
# Takes data, and averages all positive (only numerical) numbers in blocks
dimensions = data.shape
height = int(numpy.floor(dimensions[0]/blocksize))
width = int(numpy.floor(dimensions[1]/blocksize))
averaged = numpy.zeros((height, width))
for i in range(0, height):
print i*1.0/height
for j in range(0, width):
block = data[i*blocksize:(i+1)*blocksize,j*blocksize:(j+1)*blocksize]
if block.any():
averaged[i][j] = numpy.average(block[block>0])
return averaged
arr = numpy.random.random((6,6))
avgd = avg_func(arr, 3)
有没有办法让它更像Python?也许纽比有什么东西已经在做了?在
更新
基于M.Massias下面的soln,这里是一个用变量替换固定值的更新。不确定编码是否正确。不过,它似乎确实有效:
^{pr2}$