numpy数组中的向量化非零组

时间:2019-04-04 15:09:19

标签: python numpy

假设您有1d numpy数组:

[0,0,0,0,0,1,2,3,0,0,0,0,4,5,0,0,0]

如何使用for循环创建以下组?

[1,2,3], [4,5]

1 个答案:

答案 0 :(得分:2)

这是使用np.split的一种方法:

a
# array([0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 4, 5, 0, 0, 0])
### find nonzeros
z = a!=0
### find switching points
z[1:] ^= z[:-1]
### split at switching points and discard zeros
np.split(a, *np.where(z))[1::2]
# [array([1, 2, 3]), array([4, 5])]