如何将数组划分为段,然后使用python numpy执行段的子段?

如何将数组划分为段,然后使用python numpy执行段的子段?,python,arrays,image,numpy,Python,Arrays,Image,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]

我想将一个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]])

可以使用
skimage.util.shape

的函数
view\u as_blocks
,然后用平均值做什么?所以,输出将是
(4,4)
shape,对吗?@gmds我想用其中每个分段的4个平均值来计算每个分段的标准偏差。@Divakar输出将是(2,2).一段的一个标准偏差。你能告诉我们你是如何得出这些结果的吗?