Как вернуть (перепаковать) view_as_block для трехмерных массивов томов? - PullRequest
0 голосов
/ 27 сентября 2018

Я использовал view_as_block, чтобы разделить мои тома на тома 64x64x64, используя http://scikit -image.org / docs / dev / api / skimage.util.html # skimage.util.view_as_blocks .После некоторых фильтров и модификаций я бы хотел их упаковать обратно.Есть ли способ упаковать их в правильном порядке.

предыдущая форма:

print(np.asarray(padded_training_array).shape)

вывод:

(2240, 576, 1024, 1)

padded_training_array = view_as_blocks(np.squeeze(padded_training_array[:, :, :], block_shape=(64,64,64))

новая форма:

(35, 9, 16, 64,64, 64)

Некоторые модификации .. и желаемой формы:

(2240, 576, 1024)

1 Ответ

0 голосов
/ 28 сентября 2018

Вы можете использовать numpy.reshape:

>>> import numpy as np
>>> from skimage import util
>>> image = np.random.random((6, 6, 6))
>>> blocks = util.view_as_blocks(image, (2, 2, 2))
>>> blocks.shape
(3, 3, 3, 2, 2, 2)
>>> blocks[(0,) * 6] = 3.0
>>> image2 = np.reshape(blocks, (6, 6, 6))
>>> image2[0, 0, 0]
3.0

Но учтите, что view_as_blocks возвращает представление .Если ваши изменения сделаны на месте, вам даже не нужно менять форму, ваше исходное изображение уже будет изменено:

>>> image[0, 0, 0]
3.0

Если вы хотите избежать этого, используйте view_as_blocks(...).copy().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...