Python 은 numpy 의 nan 과 inf,nan 을 대응 하 는 평균 값 으로 바 꿉 니 다.

nan:not a number
inf:infinity;무궁 하 다
numpy 의 nan 과 inf 는 모두 float 형식 입 니 다.

t!=t bool 형식의 배열(행렬)을 되 돌려 줍 니 다.
np.count_nonzero()는 배열 의 비 0 요소 개 수 를 되 돌려 줍 니 다.true 의 개수.
np.isnan()은 bool 형식의 배열 을 되 돌려 줍 니 다.
그럼 문제 가 생 겼 습 니 다.한 그룹의 데이터 에서 단순히 nan 을 0 으로 바 꾸 는 것 이 적당 합 니까?어떤 영향 을 미 칠 까?
예 를 들 어 모두 0 으로 교체 한 후에 교체 전의 평균 값 이 0 보다 크 면 교체 후의 평균 값 은 반드시 작 아 질 것 이다.그래서 더욱 일반적인 방식 은 부족 한 수 치 를 평균 값(중간 값)으로 교체 하거나 부족 한 값 이 있 는 줄 을 직접 삭제 하 는 것 이다.
demo.py(numpy,배열 의 nan 을 대응 하 는 평균 값 으로 바 꿉 니 다):

# coding=utf-8
import numpy as np
 
def fill_ndarray(t1):
 for i in range(t1.shape[1]): #      (     nan        )
 temp_col = t1[:, i] #      
 nan_num = np.count_nonzero(temp_col != temp_col)
 if nan_num != 0: #   0,         nan
  temp_not_nan_col = temp_col[temp_col == temp_col] #   nan ndarray
 
  #      nan   ,       nan   
  temp_col[np.isnan(temp_col)] = temp_not_nan_col.mean() # mean()     。
 return t1
 
if __name__ == '__main__':
 t1 = np.array([[ 0., 1., 2., 3., 4., 5.],
   [ 6., 7., np.nan, np.nan, np.nan, np.nan],
   [12., 13., 14., 15., 16., 17.],
   [18., 19., 20., 21., 22., 23.]])
 
 t1 = fill_ndarray(t1) #  nan        
 print(t1)
 '''
 [[ 0. 1. 2. 3. 4. 5.]
 [ 6. 7. 12. 13. 14. 15.]
 [12. 13. 14. 15. 16. 17.]
 [18. 19. 20. 21. 22. 23.]]
 '''
보충 지식:numpy 가 배열 의 평균 을 구 할 때 nan 값 을 무시 하 는 방법
프롤로그:numpy 배열 에 평균 np.mean()또는 배열 의 최대 최소 값 np.max()/np.min()을 구 할 때 배열 에 nan 이 있 으 면 구 하 는 결 과 는 nan 입 니 다.그러면 그 중의 nan 을 어떻게 무시 해 야 합 니까?이 때 는 다른 방법 을 사용 해 야 합 니 다:np.nanmean(),np.nanmax(),np.nanmin().
np.mean()효과 사용 하기

np.nanmean()효과 사용 하기

이 파 이 썬 은 numpy 의 nan 과 inf,nan 을 대응 하 는 평균 값 으로 바 꾸 는 것 이 바로 소 편 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 하 시기 바 랍 니 다.여러분 들 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기