Как разделить массив на сегменты, а затем сделать подсегменты сегментов с помощью Python NumPy? - PullRequest
3 голосов
/ 08 апреля 2019

Я хочу разделить массив 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]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...