一个demo让你认识numpy

通过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.]]

你可能感兴趣的:(一个demo让你认识numpy)