У меня есть массив 2d numpy (arr), в котором есть только нули и единицы.
Например, массив 2d numpy в форме (h, w).
Я хочу изменить размер массива до формы (h // scale, w // scale), и мне нужно сохранить все единицы.
# arr is a 2d numpy array
h, w = arr.shape
h_new, w_new = h // scale, w // scale
arr_new = np.zeros((h_new, w_new))
for i in range(h):
for j in range(w):
if arr[i, j] == 1:
arr_new[i // scale, j // scale] = 1
Например, 2d-массив, подобный этому, и scale = 2:
[
[0,0,0,0],
[0,1,0,0],
[1,0,0,1],
[0,0,0,1]
]
После запуска кода arr_new будет:
[
[1,0],
[1,1]
]
изменение всех координат единиц:
(1,1) -> (0,0)
(2,0) -> (1,0)
(2,3) -> (1,1)
(3,3) -> (1,1)
Есть ли лучший способ сделать это?
Спасибо.