numpy中nan的特性、操作和统计

代码示例:

import numpy as np

# 创建一个nan
a = np.nan
print(a,type(a))    #打印:nan <class 'float'> *****
print(np.isnan(a))    #打印:True
print("-"*40)

# 注意:float类型的数据才能赋值nan
b = np.arange(24,dtype=float).reshape(4,6)
print(b)
'''
打印:
[[ 0.  1.  2.  3.  4.  5.]
 [ 6.  7.  8.  9. 10. 11.]
 [12. 13. 14. 15. 16. 17.]
 [18. 19. 20. 21. 22. 23.]]
'''
#  将4行5列的数改成nan
b[3,4] = np.nan
print(b)
# 注意: nan和任何数计算都为nan  *****
print(np.sum(b,axis=0))    #打印:[36. 40. 44. 48. nan 56.]
print(np.isnan(b))
'''
打印:
[[False False False False False False]
 [False False False False False False]
 [False False False False False False]
 [False False False False  True False]]
'''
# 将nan替换掉
b[np.isnan(b)] = 0
print(b)
'''
打印:
[[ 0.  1.  2.  3.  4.  5.]
 [ 6.  7.  8.  9. 10. 11.]
 [12. 13. 14. 15. 16. 17.]
 [18. 19. 20. 21.  0. 23.]]
'''
# np.nan != np.nan  结果 是TRUE 
print(np.nan != np.nan)    #打印True
print("-"*40)

c = np.arange(24,dtype=float).reshape(4,6)
c[(2,3),(2,4)] = np.nan
print(c != c)
'''
打印:
[[False False False False False False]
 [False False False False False False]
 [False False  True False False False]
 [False False False False  True False]]
'''
# 可以使用np.count_nonzero() 来判断非零的个数
print(np.count_nonzero(c))    #打印23
# False=0   True=1
print(np.count_nonzero(c != c))    #打印2
d = np.arange(24).reshape(4,6).astype('float') 
# 将数组中的一部分替换nan
d[1,3:] = np.nan
print(d)
'''
打印:
[[ 0.  1.  2.  3.  4.  5.]
 [ 6.  7.  8. nan nan nan]
 [12. 13. 14. 15. 16. 17.]
 [18. 19. 20. 21. 22. 23.]]
'''

猜你喜欢

转载自blog.csdn.net/caoxinjian423/article/details/112078050