如果它们在数组中重复,则删除值

时间:2017-04-13 15:44:03

标签: numpy

我有一个类似

的数组
[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]

左右。

1 个答案:

答案 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