2016-01-04 2 views
6

Как удалить ведущие/завершающие нули массива numpy?Цоколь/полосы нулей массива numpy

import numpy as np 
a = np.array([0,0,0,3,2,-1,0,0,7,9,13,0,0,0,0,0,0,0]) 

#Desired output 
[3,2,-1,0,0,7,9,13] 

Это не работает:

a[a != 0]  

, потому что это устранило бы все нули включая нули, которые внутри.

ответ

12

Использование numpy.trim_zeros:

>>> import numpy as np 
>>> a = np.array([0,0,0,3,2,-1,0,0,7,9,13,0,0,0,0,0,0,0]) 
>>> np.trim_zeros(a) 
array([ 3, 2, -1, 0, 0, 7, 9, 13]) 
+1

Nice! Я не знал об этой функции, и моя первая идея была «w = np.where (a! = 0) [0]; a [w [0]: w [-1] +1]], что по очевидным причинам не столь устойчиво. – timgeb

+0

Grrrr .... еще одно, что закодировано вручную, только чтобы узнать, что это есть .... – percusse

Смежные вопросы