问题遇到的现象和发生背景
在写二维数组异常值替换代码中,遇到一个问题,如何将数组中的异常值使用该列的均值进行替换,需要逐列进行。异常值判断已找到了解决办法。目前查阅文献资料,发现都是针对一维数组或list进行的操作,没有对二维数组的这类操作(异常值替换为均值)。
用代码块功能插入代码,请勿粘贴截图
mean = np.mean(data_array, axis=1)
std = np.std(data_array, axis=1)
floor = mean - 3std
upper = mean + 3std
for i, val in enumerate(data_array): #这个代码是对一维数组的操作,对二维数组如何修改?
data_array[i] = float(np.where(((val<floor)|(val>upper)), mean, val)) #这个代码是对一维数组的操作,对二维数组如何修改?
运行结果及报错内容
ValueError: operands could not be broadcast together with shapes (4,) (3,)
我的解答思路和尝试过的方法
按列求均值和标准差,对异常值(偏离3倍标准差)使用该列均值替换。使用上述代码进行运算,但没有通过。
我想要达到的结果
修改优化代码或给出更好的解决方案,最终达到异常值由该列均值替代。代码要通用的。谢谢!