반응형
핵심 정리
NumPy reshape는 배열의 데이터 값은 유지한 채 shape를 바꾸는 연산이고, np.isnan은 배열 원소마다 NaN 여부를 불리언 값으로 돌려주는 검사 함수입니다. 이 글의 그림은 같은 여섯 값을 2행 3열, 3행 2열, 1차원 배열, 열 벡터로 바꾸는 차이를 보여 줍니다.
- reshape를 사용할 때에는 원소 총개수가 호환되어야 합니다. 예제의 여섯 원소는 (2, 3), (3, 2), (6,), (6, 1) 모양으로 바꿀 수 있습니다.
- (6,)은 1차원 배열이고 (6, 1)은 행 여섯 개와 열 하나를 가진 2차원 배열이므로, 이후 연산이 기대하는 차원을 확인해야 합니다.
- reshape(-1, 1)처럼 한 축에 -1을 지정하면 NumPy가 전체 원소 수와 나머지 축을 바탕으로 그 축의 크기를 계산합니다.
- NaN 포함 여부를 확인할 때 np.nan in 배열 같은 멤버십 비교에 기대기보다 np.isnan(배열)로 원소별 마스크를 만들고, 필요하면 any 연산으로 하나라도 있는지 확인하는 흐름이 명확합니다.
- 원문의 np.isnan(np.min(X)) 예제는 NaN이 섞인 집계 결과를 확인하는 메모이며, 개별 위치를 찾으려면 배열 자체에 np.isnan을 적용하는 편이 알맞습니다.
먼저 아래 이미지에서 reshape 전후 shape가 어떻게 달라지는지 확인하고, 이어지는 코드에서 NaN 비교가 일반 값 비교와 다르게 다뤄져야 하는 이유를 읽으면 됩니다.
이어서 볼 글
- NumPy 배열 사용법: 난수 생성, 조건 인덱싱, np.where - 배열 생성과 조건 선택을 먼저 확인한 뒤 reshape와 NaN 검사로 이어갈 수 있습니다.
reshape
이 함수는 다음처럼 차원을 바꿀 때 사용함

원래는 2행 3열인 2차원 array 자료를

reshape으로 위처럼 3행 2열로 변경할 수 있다.

위 처럼 2차원을 1차원으로 줄일 수도 있고,

1차원같은 2차원으로 만들수도 있다(이런 형태가 Keras 쓰다보면 필요함)
더욱 좋은 사용법은 -1을 이용해서 일부값을 스킵하면 알아서 채워준다는 것

nan 체크
놀랍게도 아래 방법으로는 체크가 되지 않는 경우가 있음을 발견
>>> X[date][isin]
array([ nan, nan, nan, nan, nan, nan])
>>> np.nan in X[date][isin]
False
여기에도 해당 내용이 있다.
>>> np.isnan(np.min(X))
True
위 처럼 하라는거네
반응형
'Programming' 카테고리의 다른 글
| Python 디스크립터 이해하기: __get__, __set__, 속성 접근 제어 (0) | 2026.05.26 |
|---|---|
| C++ 약수 구하기 방법: 완전 탐색과 O(sqrt(N)) 최적화 (0) | 2026.05.26 |
| PyTorch BCELoss 사용법: criterion, output, label로 loss 계산 (0) | 2026.05.22 |
| 조건부확률 개념: 표본공간, 독립사건, 베이즈 정리 (0) | 2026.05.22 |
| Python class variable 개념: 클래스 변수와 인스턴스 변수 차이 (0) | 2026.05.20 |
