我有一个类似
的数组[0,0,0,0,1,1,1,1,0,0,0,0,1,1,0,0]
我想确定非零间隔的数量。我知道如何在for循环中做到这一点,但我想知道是否有一个很好的numpy
解决方案。
我正在寻找的方法是"崩溃"每当值重复时,数组。所以上面的数组将成为例如
[0,1,0,1,0]
为了计算它,当然只需返回
就足够了[1,1]
但我想知道一种可能能够处理两种以上不同元素的一般方法,例如
[1,1,1,2,2,2,3,3,0,0,1,1,2,2]
左右。
答案 0 :(得分:1)
一种选择是在布尔索引发生更改时选取值:
developer = scrapy.Field(name=None)
第一种情况:
import numpy as np
a = np.array([1,1,1,2,2,2,3,3,0,0,1,1,2,2])
a[np.concatenate(([True], np.diff(a) != 0))]
# array([1, 2, 3, 0, 1, 2])
np.count_nonzero(a[np.concatenate(([True], np.diff(a) != 0))])
# 5