【发布时间】:2021-04-04 23:30:56
【问题描述】:
为了让事情更清楚,我不想从直方图中删除整个 bin,我只想删除一些数据,使其低于所需的频率。图像中的线显示了我想要的最大频率
对于上下文,我有一个包含多个角度的数据集。在使用的数据方面,我的问题与Remove data above threshold in histogram 这里提出的问题非常相似,但与链接中的问题不同,我不想摆脱数据,只是减少它。
我可以直接从直方图中执行此操作,还是只需要删除数据集中的一些数据?
编辑(抱歉,我对这里的编码和格式不熟悉): 这是我尝试过的解决方案
bns = 30
hist, bins = np.histogram(dataset['Steering'], bins= bns)
removeddata = []
spb = 700
for j in range(bns):
rdata = []
for i in range(len(dataset['Steering'])):
if dataset['Steering'][i] >= bins[j] and dataset['Steering'][i] <=
bins[j+1]:
rdata.append(i)
rdata = shuffle(rdata)
rdata = rdata[spb:]
removeddata.extend(rdata)
print('removed:', len(removeddata))
dataset.drop(dataset.index[removeddata], inplace = True)
print ('remaining:', len(dataset))
center = (bins[:-1] + bins[1:])*0.5
plt.bar(center,hist,width=0.05)
plt.show()
这是其他人的解决方案,但似乎对他们有用。即使直接复制,它仍然会抛出错误。我得到的错误是“ValueError:一个系列的真值是不明确的。使用a.empty,a.bool(),a.item(),a.any()或a.all()”,我试图将 'and' 更改为 & 并得到错误“TypeError: Cannot perform 'rand_' with a dtyped [float64] array and scalar of type [bool]”。不确定 this 到底指的是什么,但指向 if 语句所在的行。检查了所有东西的dtype,它们都是float64类型,所以不确定我的下一步
【问题讨论】:
-
听起来你想要一个低通滤波器?
-
谢谢,但不,我不这么认为,有问题的角度是转向角度。参考我提供的链接,我基本上与提出问题的用户具有完全相同的设置,但提供答案的用户对问题的解释不同。