Как 'растянуть' массив в python через numpy
Мне нужно растянуть большой массив, но простым циклом это будет довольно долго, 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 шт):
Автор решения: splash58
→ Ссылка
Примените последовательно np.repeat к строкам и столбцам или в обратном порядке
new_arr = np.repeat(arr, 2, axis=1)
new_arr = np.repeat(new_arr, 2, axis=0)
print(new_arr)
Автор решения: Alex Alex
→ Ссылка
Можно воспользоваться библиотеками для обработки изображений, 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)