gpt4 book ai didi

python - 合并非重叠数组 block

转载 作者:太空狗 更新时间:2023-10-29 21:48:42 25 4
gpt4 key购买 nike

我使用此函数将 (512x512) 二维数组划分为 2x2 block 。

skimage.util.view_as_blocks (arr_in, block_shape)
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
>>> B = view_as_blocks(A, block_shape=(2, 2))
>>> B[0, 0]
array([[0, 1],
[4, 5]])
>>> B[0, 1]
array([[2, 3],
[6, 7]])

现在我需要在操作后将相同的 block 放在它们原来的位置,但我在 skimage 中看不到任何功能。

像以前一样合并非重叠数组的最佳方法是什么?

谢谢!

最佳答案

使用 transpose/swapaxes 交换第二个和第三个轴,然后 reshape 以合并最后两个轴 -

B.transpose(0,2,1,3).reshape(-1,B.shape[1]*B.shape[3])
B.swapaxes(1,2).reshape(-1,B.shape[1]*B.shape[3])

sample 运行-

In [41]: A
Out[41]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])

In [42]: B = view_as_blocks(A, block_shape=(2, 2))

In [43]: B
Out[43]:
array([[[[ 0, 1],
[ 4, 5]],

[[ 2, 3],
[ 6, 7]]],


[[[ 8, 9],
[12, 13]],

[[10, 11],
[14, 15]]]])

In [44]: B.transpose(0,2,1,3).reshape(-1,B.shape[1]*B.shape[3])
Out[44]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])

关于python - 合并非重叠数组 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41510395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com