Как 'растянуть' массив в python через numpy

Рейтинг: 1Ответов: 2Опубликовано: 01.03.2023

Мне нужно растянуть большой массив, но простым циклом это будет довольно долго, numpy.pad() работает корректно только на массивах размера 2 на 2. например, массив:

[[ 1, 2, 3, 4],
 [ 5, 6, 7, 8],
 [ 9,10,11,12],
 [13,14,15,16]]

мне нужно преобразовать в

[[ 1, 1, 2, 2, 3, 3, 4, 4],
 [ 1, 1, 2, 2, 3, 3, 4, 4],
 [ 5, 5, 6, 6, 7, 7, 8, 8],
 [ 5, 5, 6, 6, 7, 7, 8, 8],
 [ 9, 9,10,10,11,11,12,12],
 ...

Ответы

▲ 2

Примените последовательно np.repeat к строкам и столбцам или в обратном порядке

new_arr = np.repeat(arr, 2, axis=1)
new_arr = np.repeat(new_arr, 2, axis=0)
print(new_arr)
▲ 0

Можно воспользоваться библиотеками для обработки изображений, OpenCV или Pillow, должно работать быстро:

import numpy as np
import cv2
a=np.array([[ 1, 2, 3, 4],[ 5, 6, 7, 8],[ 9,10,11,12],[13,14,15,16]])
m,n=a.shape
result=cv2.resize(a,(2*m,2*n), interpolation=cv2.INTER_NEAREST)