如何将数组划分为段,然后使用python numpy执行段的子段?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将数组划分为段,然后使用python numpy执行段的子段?相关的知识,希望对你有一定的参考价值。
我想将8 * 8数组分成4个段(每个段为4 * 4数组),如以下步骤2所示。然后再将每个分段划分为其他小的4个子细分(每个子细分为2 * 2数组),然后找到每个子细分的平均值,然后使用其中的4个子细分的4个平均值找到每个细分的标准偏差。这样最后我只有一个数组(2 * 2数组),即1个段的标准差为1。
import numpy as np
from skimage.util.shape import view_as_blocks
arr=np.array([[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8]])
img= view_as_blocks(arr, block_shape=(4,4))
至此,我已经尝试过,但是由于我是python和numpy的新手,所以我无法满足我的要求。请帮助我达到我的要求。
#step1-Array
array([[1, 2, 3, 4, 5, 6, 7, 8],
[1, 2, 3, 4, 5, 6, 7, 8],
[1, 2, 3, 4, 5, 6, 7, 8],
[1, 2, 3, 4, 5, 6, 7, 8],
[1, 2, 3, 4, 5, 6, 7, 8],
[1, 2, 3, 4, 5, 6, 7, 8],
[1, 2, 3, 4, 5, 6, 7, 8],
[1, 2, 3, 4, 5, 6, 7, 8]])
#step2-segments
array([[[[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4]],
[[5, 6, 7, 8],
[5, 6, 7, 8],
[5, 6, 7, 8],
[5, 6, 7, 8]]],
[[[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4]],
[[5, 6, 7, 8],
[5, 6, 7, 8],
[5, 6, 7, 8],
[5, 6, 7, 8]]]])
**more steps to go to get final output**
预期输出
([[1.0, 1.0],
[1.0, 1.0]])
答案
可以使用view_as_blocks
的功能skimage.util.shape
来完成。
以上是关于如何将数组划分为段,然后使用python numpy执行段的子段?的主要内容,如果未能解决你的问题,请参考以下文章