У меня есть 2D-массив numpy, который представляет монохромное изображение с CCD, который был закодирован 3x3 (то есть каждое значение в массиве представляет 9 пикселей (3x3) на физическом CCD).Rescale numpy array
Я хочу перемасштабировать его в соответствии с оригинальной компоновкой ПЗС (чтобы я мог легко наложить его на неизогнутое изображение с той же ПЗС-матрицы).
Я видел Resampling a numpy array representing an image, но это не похоже на то, что я хочу.
Предположим, у меня есть массив г:
import numpy as np
import scipy.ndimage
g = np.array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
Когда я пытаюсь масштабировать его в 2 раза:
o = scipy.ndimage.zoom(g, 2, order=0)
я получаю именно то, что я ожидаю, - каждое значение теперь 2x2 идентичны значения:
array([[0, 0, 1, 1, 2, 2],
[0, 0, 1, 1, 2, 2],
[3, 3, 4, 4, 5, 5],
[3, 3, 4, 4, 5, 5],
[6, 6, 7, 7, 8, 8],
[6, 6, 7, 7, 8, 8]])
Но когда я пытаюсь масштабироваться с коэффициентом 3, я получаю это:
o = scipy.ndimage.zoom(g, 3, order=0)
дает мне:
array([[0, 0, 1, 1, 1, 1, 2, 2, 2],
[0, 0, 1, 1, 1, 1, 2, 2, 2],
[3, 3, 4, 4, 4, 4, 5, 5, 5],
[3, 3, 4, 4, 4, 4, 5, 5, 5],
[3, 3, 4, 4, 4, 4, 5, 5, 5],
[3, 3, 4, 4, 4, 4, 5, 5, 5],
[6, 6, 7, 7, 7, 7, 8, 8, 8],
[6, 6, 7, 7, 7, 7, 8, 8, 8],
[6, 6, 7, 7, 7, 7, 8, 8, 8]])
Я хотел каждое значение в исходном массиве, чтобы стать набором значений 3х3 ... это не то, что я получаю.
Как я могу это сделать? (И почему я получаю этот неинтуитивный результат?)
Почему -1? Это был плохой вопрос? Слишком много тегов? Будучи новичком SO, я был бы признателен за некоторые отзывы о том, что я делаю неправильно. –
Я предполагаю, что кто-то видел это, знал ответ, предположил, что вы не потрудились прочитать документы на 'zoom', и, следовательно, опустили вас на помощь вампиру. Лично я могу понять, почему вы все еще можете быть смущены после прочтения документов 'zoom', но я думаю, вы могли бы лучше объяснить? Я не знаю. – abarnert
похоже дубликат http://stackoverflow.com/questions/7525214/how-to-scale-a-numpy-array?rq=1 –