import numpy as np
np.random.seed(10)
# a = np.random.randint(10, 20, (4, 5))
# a = a.astype(float)
# a[:, 1] = 0
# a[2, 2] = np.nan
# # 判断非0 的个数:
# print(np.count_nonzero(a))
# # 判断nana的个数:
# print(np.count_nonzero(a != a))
# # 或者是
# print(np.count_nonzero(np.isnan(a)))
# # nan做任何运算的是都是nan
# print(a)
# print(np.sum(a, axis=0, keepdims=True))
#
# # 将nan赋值成0
# a[a != a] = 0
# print(a)
#
# # 取中值np.median(a,axis=0)
# print(np.median(a, axis=0))
#
# # 取极差np.ptp(a,axis=0)
#
# # 取标准差array.std()
#
#
# # 将nan用均值替换
#
# print(a)
#
# a[2, 3] = np.nan
#
def fill_ndarray_row(a):
for row in a:
nan_num = np.count_nonzero(row != row)
# 如果有nan用均值替代
if nan_num != 0:
print('含nan的行\n', row)
row_mean = (row[row == row]).mean()
row[row != row] = row_mean
return a
def fill_ndarray_col(a):
for i in range(a.shape[1]):
col=a[:,i]
nan_num = np.count_nonzero(col != col)
# 如果有nan用均值替代
if nan_num != 0:
print('含nan的列\n', col)
col_mean = (col[col == col]).mean()
col[col != col] = col_mean
return a
if __name__ == '__main__':
a=np.arange(12).reshape(3,4).astype('float')
a[1:,2]=np.nan
print('处理前的a\n', a)
a2=fill_ndarray_row(a)
print('处理后的a\n', a2)
b=np.arange(12).reshape(3,4).astype('float')
b[1,2:]=np.nan
print('处理前的b\n', b)
b2=fill_ndarray_col(b)
print('处理后的b\n', b2)
numpy处理nan
猜你喜欢
转载自blog.csdn.net/qq_44099721/article/details/104056214
今日推荐
周排行