numpy中的缺失数据补全
问题:函数中传入t1,t1进行切片操作,赋值为temp_col,为什么改变的是temp_col而t1却发生了改变import numpy as np
#print(t1)
#遍历每一列
def fill_ndarray(t1):
for i in range(t1.shape):
temp_col = t1[:, i]#当前的一列
nan_nums = np.count_nonzero(temp_col!=temp_col)#该列的nan个数
if nan_nums != 0:#如果该列存在某一个nan
temp_not_nan_col = temp_col
#选中nan位置,赋值给均值
temp_col = temp_not_nan_col.mean()
return t1
if __name__ =='__main__':
t1 = np.arange(12).reshape((3,4)).astype('float')
t1 = np.nan
print(t1)
fill_ndarray(t1)
print(t1)
a =b[:]会创建新的对象a,但是a的数据完全由b保管,他们两个的数据变化是一致的,涉及浅拷贝,实际情况自行百度 这里涉及到一个浅拷贝和深拷贝的问题,简单来说,[:]对于一维数组有效,但在二维数组中可能不适用,
详情可参考https://blog.csdn.net/edogawachia/article/details/79762310,希望对你有帮助
https://www.jianshu.com/p/84ec0f753a22
页:
[1]