我正在使用一些通常重复值的大型数组。类似的东西:
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
目标是以某种方式压缩数组,以便我可以使用较小的数组。我一直在看熊猫,但目前没有任何成功。
谢谢,
答案 0 :(得分:1)
您可以使用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),)