Numpy将nan、inf替换为每列均值或者0

这篇博客介绍了如何在Numpy中处理nan和inf值,提供将nan替换为每列均值以及将inf替换为0的方法。作者分享了参考链接,并幽默地自称为‘缝合大师’。
Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

nan和inf替换成0

import numpy as np
a = np.array([[np.nan, np.nan, 1, 2], [np.inf, np.inf, 3, 4], [1, 1, 1, 1], [2, 2, 2, 2]])
print (a)
where_are_nan = np.isnan(a)
where_are_inf = np.isinf(a)
#nan替换成0,inf替换成nan
a[where_are_nan] = 0
a[where_are_inf] = 0
print(a)

参考:https://blog.csdn.net/helei001/article/details/53066317

nan值替换成每列的均值

# coding=utf-8
import numpy as np
 
 
def fill_ndarray(t1):
    for i in range(t1.shape[1]):  # 遍历每一列(每一列中的nan替换成该列的均值)
        temp_col = t1[:, i]  # 当前的一列
        nan_num = np.count_nonzero(temp_col != temp_col)
        if nan_num != 0:  # 不为0,说明当前这一列中有nan
            temp_not_nan_col = temp_col[temp_col == temp_col]  # 去掉nan的ndarray
 
            # 选中当前为nan的位置,把值赋值为不为nan的均值
            temp_col[np.isnan(temp_col)] = temp_not_nan_col.mean()  # mean()表示求均值。
    return t1
 
 
if __name__ == '__main__':
    t1 = np.array([[ 0.,  1.,  2.,  3.,  4.,  5.],
                 [ 6.,  7., np.nan, np.nan, np.nan, np.nan],
                 [12., 13., 14., 15., 16., 17.],
                 [18., 19., 20., 21., 22., 23.]])
 
    t1 = fill_ndarray(t1)  # 将nan替换成对应的均值
    print(t1)
    '''
    [[ 0.  1.  2.  3.  4.  5.]
     [ 6.  7. 12. 13. 14. 15.]
     [12. 13. 14. 15. 16. 17.]
     [18. 19. 20. 21. 22. 23.]]
    '''

参考:https://blog.csdn.net/houyanhua1/article/details/87688990

可惜了这篇博客没有inf替换成均值的方法

inf替换成每列的均值

import numpy as np
a = np.array([[np.nan, np.nan, 1, 2], [np.inf, np.inf, 3, 4], [1, 1, 1, 1], [2, 2, 2, 2]])
print (a)
where_are_nan = np.isnan(a)
where_are_inf = np.isinf(a)
#nan替换成0,inf替换成nan
# a[where_are_nan] = 0
a[where_are_inf] = np.nan
print(a)

##将nan替换成每列的均值
def fill_ndarray(t1):
    for i in range(t1.shape[1]):  # 遍历每一列(每一列中的nan替换成该列的均值)
        temp_col = t1[:, i]  # 当前的一列
        nan_num = np.count_nonzero(temp_col != temp_col)
        if nan_num != 0:  # 不为0,说明当前这一列中有nan
            temp_not_nan_col = temp_col[temp_col == temp_col]  # 去掉nan的ndarray

            # 选中当前为nan的位置,把值赋值为不为nan的均值
            temp_col[np.isnan(temp_col)] = temp_not_nan_col.mean()  # mean()表示求均值。
    return t1

data = fill_ndarray(a)
print(data)


我就是缝合大师,哈哈哈

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值