拿一个大数据集,从特定列中删除不在2 SD范围内的任何数字并创建一个数组,现在我想从列中删除不在数组中的任何数字,而不会弄乱索引。最好将任何不存在的数字转换为nan。
用于删除2 SD之外的值的代码:
pupil_area_array = numpy.array(part_data['pupil_area'])
mean = numpy.mean(part_data['pupil_area'], axis=0)
sd = numpy.std(part_data['pupil_area'], axis=0)
final_list = [x for x in part_data['pupil_area'] if (x > mean - 2 * sd)]
final_list = [x for x in final_list if (x < mean + 2 * sd)]
print(final_list)
答案 0 :(得分:0)
如果您不限于使用生成器,则应该可以使用 map()
https://www.geeksforgeeks.org/python-map-function/:
def filter_sd(value):
if x > mean - 2 * sd:
return x
return None #or return 'Nan'
final = map(filter_sd, part_data['pupil_area'])