此代碼有效。但我不禁感到這是一種黑客行爲,尤其是「抵消」部分。我不得不把它放在那裏,因爲否則刪除操作中的所有索引值都會被移位一次。更好的方法來刪除統計異常值比這個?
# remove outliers > devs # of std deviations
devs = 1
deletes = []
for num, duration in enumerate(durations):
if (duration > (mean_duration + (devs * std_dev_one_test))) or \
(duration < (mean_duration - (devs * std_dev_one_test))):
deletes.append(num)
offset = 0
for delete in deletes:
del durations[delete - offset]
del dates[delete - offset]
offset += 1
想法如何使它更好?
'(持續時間>(mean_duration +(開發者* std_dev_one_test)))或(持續時間<(mean_duration - (devs * std_dev_one_test)))'簡化爲'abs(duration-mean_duration)> devs * std_dev_one_test',而不會失去任何可讀性。 – PaulMcG 2012-07-07 07:22:05