鱼C论坛

 找回密码
 立即注册
查看: 1168|回复: 3

[已解决]numpy中的缺失数据补全

[复制链接]
发表于 2020-5-7 09:34:25 | 显示全部楼层 |阅读模式
20鱼币

问题:函数中传入t1,t1进行切片操作,赋值为temp_col,为什么改变的是temp_col  而t1却发生了改变
import numpy as np

#print(t1)
#遍历每一列
def fill_ndarray(t1):
    for i in range(t1.shape[1]):
        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[temp_col==temp_col]
            #选中nan位置,赋值给均值
            temp_col[np.isnan(temp_col)] = temp_not_nan_col.mean()
    return t1


if __name__ =='__main__':
    t1 = np.arange(12).reshape((3,4)).astype('float')
    t1[1, 2:] = np.nan
    print(t1)
    fill_ndarray(t1)
    print(t1)
最佳答案
2020-5-7 09:34:26
a =b[:]会创建新的对象a,但是a的数据完全由b保管,他们两个的数据变化是一致的,涉及浅拷贝,实际情况自行百度
QQ图片20200507093051.png

最佳答案

查看完整内容

a =b[:]会创建新的对象a,但是a的数据完全由b保管,他们两个的数据变化是一致的,涉及浅拷贝,实际情况自行百度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-7 09:34:26 | 显示全部楼层    本楼为最佳答案   
a =b[:]会创建新的对象a,但是a的数据完全由b保管,他们两个的数据变化是一致的,涉及浅拷贝,实际情况自行百度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-7 13:45:32 | 显示全部楼层
这里涉及到一个浅拷贝和深拷贝的问题,简单来说,[:]对于一维数组有效,但在二维数组中可能不适用,
详情可参考https://blog.csdn.net/edogawachia/article/details/79762310,希望对你有帮助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-7 14:13:17 | 显示全部楼层
https://www.jianshu.com/p/84ec0f753a22
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 05:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表