изменить размер, используя дробный шаг в NumPy - PullRequest
1 голос
/ 03 апреля 2012

как я могу изменить размер массива numpy с нецелым шагом? то есть: Чтобы преобразовать трехмерный массив с размером (64,64,64) в трехмерный массив, например с размером (55,100,60), интерполировать значения или использовать что-то вроде функции kron

1 Ответ

3 голосов
/ 03 апреля 2012

Как вы хотите интерполировать?

Не существует «лучшего», «правильного» или «нормального» способа интерполировать данные ... Все зависит от вашей проблемы.

Существует большое количество разных способов сделать то, что вы хотите.

Начальной точкой будет scipy.ndimage.zoom, которая может использовать интерполяцию сплайном, линейным или ближайшим соседом и выполнять именно то, что вам нужно.

Указание order=0 даст интерполяцию ближайшего соседа, order=1 даст линейную интерполяцию, а все, что больше 1, даст указанный порядок сплайн-интерполяции. (По умолчанию используется order=3, то есть интерполяция с кубическим сплайном.)

В вашем случае это будет:

new = zoom(data, (55/64.0, 100/64.0, 60/64.0), order=typeofinterpolationyouwant)

Вам также необходимо подумать, как бы вы хотели, чтобы границы обрабатывались. По умолчанию любые значения вне исходного массива обрабатываются как 0. С помощью сплайн-интерполяции это обычно приводит к сильным артефактам вблизи краев массива.

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