如何将数组划分为段,然后使用python numpy执行段的子段?
我想将一个8*8数组分成4段(4*4数组的每段),如下步骤2所示。然后再次将每个段划分为其他小的4个子段(2*2数组的每个子段),然后找到每个子段的平均值,然后使用其中4个子段的4个平均值找到每个段的标准偏差。所以最后我只有一个数组(2*2数组),即1段的标准偏差为1如何将数组划分为段,然后使用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]
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).一段的一个标准偏差。你能告诉我们你是如何得出这些结果的吗?