从数组中未显示的列中删除数字

时间:2019-07-09 20:41:31

标签: python python-3.x numpy

拿一个大数据集,从特定列中删除不在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)

1 个答案:

答案 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'])