NAN: Not a number 不是一个数字的意思,但是它属于浮点类型
INF: infinity 无穷大,也属于浮点类型 np.inf 表示正无穷大 -np.inf 表示负无穷大
import numpy as np
print(type(np.inf), type(np.NAN))
print(np.NAN != np.NAN) # True
print(np.NAN+1) # nan
data = np.arange(24).reshape(4, 6).astype(float) # np.NAN, np.INF为浮点型
data[0,1], data[2,2], data[3,3] = np.nan, np.nan, np.inf
print(data)
print(np.isnan(data))
print(data[np.isnan(data)]) # 筛选np.NAN
print(data[~np.isnan(data)]) # 筛选出非 np.NAN 注意变为一维
location = np.where(np.isnan(data))
print(location) # location[0]:NAN所在行 location[1]:NAN所在列
data_new = np.delete(data, location[0], axis=0) # 删除NAN所在行
print(data_new)
scores = np.array([[‘59’, ‘89’], [‘90’, ‘32’], [‘78’, ‘45’], [‘34’, ‘NAN’], [‘NAN’, ‘56’], [‘23’, ‘56’]])
print(scores)
scores2 = scores.astype(float)
print(scores2.shape[1])
for x in range(scores2.shape[1]):
rows = scores2[:, x] # 所有行, 列为0或1
print(rows)
non_rows = rows[~np.isnan(rows)]
mean = non_rows.mean()
rows[np.isnan(rows)] = mean # 用平均值代替NAN
print(scores2)