Удаление NaN-строк из трехмерного массива - PullRequest
0 голосов
/ 24 февраля 2019

Как я могу удалить строки NaN из массива ниже, используя индексы (поскольку мне нужно будет удалить те же строки из другого массива.

array([[[nan,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.]],

       [[ 0.,  0.,  0.,  0.],
        [ 0., nan,  0.,  0.],
        [ 0.,  0.,  0.,  0.]]])

Я получаю индексы строк вбыть удаленным с помощью команды

a[np.isnan(a).any(axis=2)]

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

a[~np.isnan(a).any(axis=2)]
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])

Как я могуудалить строки, которые я хочу, используя индексы, полученные из моей первой команды?

1 Ответ

0 голосов
/ 24 февраля 2019

Вам необходимо изменить форму:

a[~np.isnan(a).any(axis=2)].reshape(a.shape[0], -1, a.shape[2])

Но имейте в виду, что число NaN-строк в каждом 2D-подрешетке должно быть одинаковым, чтобы получить новый 3D-массив.

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