Как удалить нули из строк массива?

Можно ли как-то удалить из каждой строки массива:

numpy.array([
    [1, 1, 1, 1, 1, 0, 0],
    [0, 1, 1, 1, 1, 0, 0],
    [0, 1, 1, 1, 1, 0, 0],
    [0, 0, 0, 1, 1, 0, 0],
    [0, 0, 0, 1, 1, 0, 0],
    [0, 0, 0, 1, 1, 1, 1],
    [0, 0, 0, 1, 1, 1, 1]
]) 

нули, при этом, чтобы сами строки не сбились в кучу, как происходит с np_arr[np_arr!= 0].

В итоге, чтобы массив был таким:

[
    [1, 1, 1, 1, 1],
    [1, 1, 1, 1],
    [1, 1, 1, 1],
    [1, 1],
    [1, 1],
    [1, 1, 1, 1],
    [1, 1, 1, 1]
]

Ответы (1 шт):

Автор решения: MaxU

Результирующий список из вопроса не может быть представлен в виде numpy.ndarray и поэтому я себе не представляю векторизированное решение, т.к. такие решения должны возвращать либо скаляр либо ndarray.

Вот простое невекторизированное решение:

In [202]: res = [x[x!=0].tolist() for x in arr]

In [203]: res
Out[203]: 
[[1, 1, 1, 1, 1],
 [1, 1, 1, 1],
 [1, 1, 1, 1],
 [1, 1],
 [1, 1],
 [1, 1, 1, 1],
 [1, 1, 1, 1]]
→ Ссылка