import numpy as np
from skimage.measure import block_reduce
arr = np.random.random((6, 6))
area_cell = np.random.random((6, 6))
block_reduce(arr, block_size=(2, 2), func=np.ma.mean)
我想将一个6x6大小的numpy数组
arr
重新调整为3x3。使用skimage函数block_reduce来实现。然而,
block_reduce
假设每个网格单元具有相同的大小。当每个网格单元具有不同的大小时,我该如何解决这个问题?在这种情况下,每个网格单元的大小由numpy数组area_cell
给出。-- 编辑:
一个例子:
arr
0.25 0.58 0.69 0.74
0.49 0.11 0.10 0.41
0.43 0.76 0.65 0.79
0.72 0.97 0.92 0.09
如果
area_cell
的所有元素都是1,且我们将4 x 4的数组转换为2 x 2,结果将是:0.36 0.48
0.72 0.61
然而,如果
area_cell
如下所示:0.00 1.00 1.00 0.00
0.00 1.00 0.00 0.50
0.20 1.00 0.80 0.80
0.00 0.00 1.00 1.00
然后,结果变成:
0.17 0.22
0.21 0.54
block_size
必须具有相同的缩放因子吗?它们可以是任意正整数。 - rayryengarea_cell
中定义。在这种情况下,block_size
并不相关。在我的特定用例中,block_size
始终具有相同的缩放因子。 - user308827