Удалить NaN-дополненную границу из массива NumPy - PullRequest
0 голосов
/ 11 июня 2018

В трехмерном массиве NumPy [строка x col x ch], дополненном NaN, например,

>>> a = np.ones((5, 5, 3))
>>> a[0, :, 0] = np.nan
>>> a[:, 0:2, :] = np.nan
>>> a[4, 4, 0] = np.nan

>>> a[:, :, 0]
array([[nan, nan, nan, nan, nan],
       [nan, nan,  1.,  1.,  1.],
       [nan, nan,  1.,  1.,  1.],
       [nan, nan,  1.,  1.,  1.],
       [nan, nan,  1.,  1., nan]])
>>> a.shape
(5, 5, 3)

, как обрезать все строки и столбцы, содержащие NaN в любом канале от границы?

В моем примере я хочу получить массив

>>> a_cropped[:, :, 0]
array([[1., 1.],
       [1., 1.],
       [1., 1.]])
>>> a_cropped.shape
(3, 2, 3)

Это связано с этим вопросом .Тем не менее, я прекрасно справляюсь с тем, что могу выделить только прямоугольную область в центре, которая может быть однозначно извлечена.

Я предполагаю, что сначала мне нужно чередовать ограничивающие строки и столбцы один за другим, чтобы не удалять "допустимые" области.

Контекст: Поворот изображения и удаление областей с добавлением NaN за пределами действительной области изображения, показанные на следующем рисунке черными пикселями.Rotated image

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