Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python数组获取值更改的位置_Python_Arrays_Pandas - Fatal编程技术网

Python数组获取值更改的位置

Python数组获取值更改的位置,python,arrays,pandas,Python,Arrays,Pandas,我正在处理一些通常重复值的大型数组。类似于此: data[0] = 10 data[1] = 10 data[2] = 12 data[3] = 12 data[4] = 13 data[5] = 9 data[0] = 10 data[2] = 12 data[4] = 13 data[5] = 9 是否有任何方法可以获得值发生变化的位置。我的意思是,得到类似的东西: data[0] = 10 data[1] = 10 data[2] = 12 data[3] = 12 data[4] =

我正在处理一些通常重复值的大型数组。类似于此:

data[0] = 10
data[1] = 10
data[2] = 12
data[3] = 12
data[4] = 13
data[5] = 9
data[0] = 10
data[2] = 12
data[4] = 13
data[5] = 9
是否有任何方法可以获得值发生变化的位置。我的意思是,得到类似的东西:

data[0] = 10
data[1] = 10
data[2] = 12
data[3] = 12
data[4] = 13
data[5] = 9
data[0] = 10
data[2] = 12
data[4] = 13
data[5] = 9
目标是以某种方式压缩数组,以便我可以使用较小的数组。我也一直在看熊猫,但目前没有任何成功


谢谢,

您可以使用pandas
shift
loc
过滤掉连续的重复项

In [11]:
# construct a numpy array of data
import pandas as pd
import numpy as np
# I've added some more values at the end here
data = np.array([10,10,12,12,13,9,13,12])
data
Out[11]:
array([10, 10, 12, 12, 13,  9, 13, 12])
In [12]:
# construct a pandas dataframe from this
df = pd.DataFrame({'a':data})
df
Out[12]:
    a
0  10
1  10
2  12
3  12
4  13
5   9
6  13
7  12

In [80]:

df.loc[df.a != df.a.shift()]
Out[80]:
    a
0  10
2  12
4  13
5   9
6  13
7  12
In [81]:

data[np.roll(data,1)!=data]
Out[81]:
array([10, 12, 13,  9, 13, 12])
In [82]:

np.where(np.roll(data,1)!=data)
Out[82]:
(array([0, 2, 4, 5, 6, 7], dtype=int64),)

您是否尝试…使用循环?请参阅相关内容:尝试将remove@sundarnatarajССаааСаааа这只会删除重复项,而不是OP要求的,他们希望在数组+1中的值发生变化时进行检测,我认为您必须使用
shift(1)
代替
shitf(-1)
以获得更多预期结果。@user3825328无需担心,很高兴我能提供帮助