熊顺祥 发表于 2020-5-7 09:34:25

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)

WangJS 发表于 2020-5-7 09:34:26

a =b[:]会创建新的对象a,但是a的数据完全由b保管,他们两个的数据变化是一致的,涉及浅拷贝,实际情况自行百度

ouyunfu 发表于 2020-5-7 13:45:32

这里涉及到一个浅拷贝和深拷贝的问题,简单来说,[:]对于一维数组有效,但在二维数组中可能不适用,
详情可参考https://blog.csdn.net/edogawachia/article/details/79762310,希望对你有帮助

xiaosi4081 发表于 2020-5-7 14:13:17

https://www.jianshu.com/p/84ec0f753a22
页: [1]
查看完整版本: numpy中的缺失数据补全