Я хочу разделить массив 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]])
Итак, результат будет иметь форму (4,4)
, верно?
@gmds Я хочу рассчитать стандартное отклонение каждого сегмента, используя 4 средних значения соответствующих подсегментов в нем.
@Divakar вывод будет (2,2). одно стандартное отклонение для одного сегмента.
@SaiKiran Итак, вы имеете в виду вычислить стандартные отклонения средних значений 4 подсегментов для каждого из 4 сегментов?
Можете ли вы показать нам ожидаемый результат и предпочтительно использовать случайные данные?
@gmds точно. это то, что я ожидаю на выходе.
@SaiKiran Понятно, я отредактирую свой ответ.
@Divakar Пожалуйста, проверьте вопрос сейчас. Я включил ожидаемый результат для того же заданного массива.
Можете ли вы показать нам, как вы пришли к таким результатам?
@Divakar Я рассчитал эти результаты вручную.
Это можно сделать с помощью функции view_as_blocks
of skimage.util.shape
.
Что тогда делать со средствами?