通过numpy将数组里的nan值用平均值替换
示例代码:
#coding=utf-8
import numpy as np
def fill_ndarray(arr):
for i in range(arr.shape[1]):
temp_col = arr[:,i] #取出所有列
non_num = np.count_nonzero(temp_col != temp_col) #np.nan != np.nan
if non_num >0: #存在nan值,non_num>0
temp_not_non_col = temp_col[temp_col == temp_col]
temp_col[np.isnan(temp_col)] = temp_not_non_col.mean() #布尔索引和求平均值函数mean()
return arr
if __name__ == '__main__':
t = np.arange(12).reshape(3,4).astype("float") #创建二维数组,将数据类型变为float
t[1,:] = np.nan #切片和赋值
print(t)
t = fill_ndarray(t)
print(t)
结果展示:
[[ 0. 1. 2. 3.]
[nan nan nan nan]
[ 8. 9. 10. 11.]]
[[ 0. 1. 2. 3.]
[ 4. 5. 6. 7.]
[ 8. 9. 10. 11.]]
网友评论