添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Numpy 的空值

# NAN: not a number,不是一个数字的意思,属于浮点型,操作的需要注意数据类型

# INF infinity,代表的是无穷大的意思,属于浮点型,np.inf表示正无穷大,-np.inf表示负无穷大,一般在除数为0是出现无穷大

# NAN和NAN是不相等的,np.NAN!=np.NAN

# NAN和任何值做运算,结果都是NAN


#_*_coding:utf-8_*_

import numpy as np

#生成1个0-9,三行五列的数组data

data=np.random.randint(0,10,size=(3,5))

data

输出结果:

array([[8, 3, 2, 8, 0],
[5, 9, 8, 8, 6],
[5, 1, 4, 0, 0]])

#第一行,第二列赋值nan

data=data.astype(np.float)

data[0,1]=np.NAN

data

输出结果:

array([[ 8., nan, 2., 8., 0.],
[ 5., 9., 8., 8., 6.],
[ 5., 1., 4., 0., 0.]])

#除数为0出现inf

data/0

输出结果:

array([[inf, nan, inf, inf, nan],
[inf, inf, inf, inf, inf],
[inf, inf, inf, nan, nan]])

#处理空值的2种方法

#1、删除缺失值

#2.替换缺失值

data[1,2]=np.NAN

data

输出结果:

array([[ 8., nan, 2., 8., 0.],
[ 5., 9., nan, 8., 6.],
[ 5., 1., 4., 0., 0.]])

#查看哪个元素为NAN

#np.isnan()

np.isnan(data)

输出结果:

array([[False, True, False, False, False],
[False, False, True, False, False],
[False, False, False, False, False]])

#直接删掉数组中的NAN值,变为一维数组

data[~np.isnan(data)]

输出结果:

array([8., 2., 8., 0., 5., 9., 8., 6., 5., 1., 4., 0., 0.])

#第二种删除nan所在的行或者列

#找到nan的位置

np.where(np.isnan(data))

输出结果:

(array([0, 1], dtype=int64), array([1, 2], dtype=int64))

#删除含有NAN值的行

lines=np.where(np.isnan(data))[0]

np.delete(data,lines,axis=0)

输出结果:

array([[5., 1., 4., 0., 0.]])

#用其他值代替NAN值

#先读取文件,将文件转化为字符串类型,然后把空值赋值NAN,再转化为浮点,再把空值换成0

scores = np.loadtxt('scores.csv',delimiter=',',skiprows=1,dtype=np.str_)

scores[scores=='']=np.NAN

scores1=scores.astype(np.float)# 代码运行到这里就出问题, 提示‘na’不能转化为浮点暂时还没有找到问题所在。

scores1[np.isnan(score1)]=0

scores1.sum(axis=1)

发布于 2021-11-01 20:36