저번 포스팅에 이어서 Metpy를 사용해보겠습니다
저번에 단위를 달아보고 단위 연산까지 해봤습니다
이번에는 단위 변환하는 모듈을 다뤄보도록 하겠습니다
단위 변환이라는 말의 뜻은 다 아실거라고 생각합니다
1m = 100㎝, 1㎝ = 10㎜, 1m = 1000㎜ 이런 과정을 말합니다
과학에서는 단위를 가지고도 새로운 변수를 만들어낼 정도로 단위가 중요합니다
가장 쉽게 접할 수 있는 단위인 미터를 예시로 사용해보겠습니다
1m = 3.28084ft (feet) = 1.093613yd (yard) = 39.370079in (inch) = 0.000621mile
이렇게 변환이 가능합니다
파이썬으로 직접 해볼까요?
1. feet
a = np.arange(5.) * units.meter 단위 환산
a.ito('feet')
a
ito라는 모듈을 사용해서 변환이 가능합니다
a라는 변수에 0부터 4까지 실수형태로 만들었습니다 (이 부분이 진짜 중요합니다)
그리고 a라는 변수를 ito 모듈을 사용해서 meter 단위를 feet 단위로 바꿔줬습니다
출력을 해보면
잘 출력이 되는 모습입니다
여기서 중요한 점은 자료를 만들때 실수형태로 만들었다는 점인데
기본 연산할 때 실수와 정수를 더하면 자동으로 실수로 만들어주지만
여기서 자료들은 단위가 생긴 값들이기 때문에 자료형이 고정됩니다
변환하는 과정에서 자료형이 같이 않으면 변환이 되지 않습니다
a = np.arange(5) * units.meter 단위 환산
a.ito('feet')
a
만약에 이렇게 만들어주면
이렇게 에러가 발생합니다
해석해보면 float64인 feet를 int64 타입으로 출력이 불가능하다고 나옵니다
규칙은 same_kind로 종류가 같아야 한다는 규칙입니다
그러면 피트를 미터로 바꾸는 과정에서는
a = np.arange(5.) * units.feet
이렇게 만들어야 미터로 변환이 가능하겠죠??
중간정리
- 단위가 매겨진 값들은 기본적으로 실수형태로 정해져있다
- 정수형태로 단위를 달아줄 수도 있다 (실수에 정수가 포함되기 때문에 가능)
- 단위를 매긴 후에 데이터 타입이 다르면 연산이 불가능하다
나머지 단위들도 빠르게 가봅시다
2.yard
a = np.arange(5.) * units.meters
a.ito('yd')
a
이번에는 yard 단위입니다
ito 뒤 괄호안에 yd는 yard라고 써도 상관없습니다!! (대신 줄여서 쓸 경우는 정확하게 국제 단위와 똑같이 줄여야합니다)
저 코드를 실행해보면
요렇게 나옵니다
3. inch
a = np.arange(5.) * units.meters
a.ito('in')
a
이번에는 인치입니다
역시 실행해보면
이렇게 나옵니다
4. mile
a = np.arange(5.) * units.meters
a.ito('mile')
a
마지막으로 마일입니다
마일은 미국에서 굉장히 많이 쓰는 단위로 알고 있어서 알아두시면 좋을거 같습니다!
실행해보면
깔끔하게 바뀐 모습입니다
다음 단위 변환은 조금 특별한 단위 변환입니다
si단위로 변환하는 작업입니다
si단위는 국제단위계라는 뜻으로 7가지 기본 단위로 구성단 단위계입니다
원소처럼 모든 단위들을 si단위로 바꿀 수 있습니다
길이 | m (미터) |
질량 | kg (킬로그램) |
시간 | s (초) |
전류 | A (암페어) |
온도 | K (켈빈) |
물질량 | mol (몰) |
광도 | cd (칸델라) |
이렇게 구성이 되어 있습니다
이 7가지 단위로 변환을 해주는 모듈이 metpy에 들어있습니다
바로 바꿔볼까요??
l = 3.34e6 * units('J/kg')
print(l, l.to_base_units(), sep = '\n')
모듈 이름은 to_base_units()입니다
기본 단위인 si 단위로 바꾸는만큼 모듈 이름에서 딱 나타납니다
제가 예시로 정한 단위는 J/kg입니다
si단위로 바꿔보면
요렇게 바뀌게 됩니다
비교하기 쉽게 바꾸기 전과 후가 같이 나오게 했습니다
J = kg · ㎡ · s^-2 이기 때문에 J/kg은 ㎡/s^-2이 나오는 거죠
si 단위도 국제 단위계인 만큼 알아두시면 좋을거 같습니다!
이렇게 단위 변환까지도 해봤습니다
다음 포스팅에서는 이제 온도 단위들을 다뤄보겠습니다
긴 글 읽어주셔서 감사합니다!!
'파이썬 > metpy' 카테고리의 다른 글
작업21: Metpy로 단열선도 그려보기 (SkewT) (0) | 2023.02.08 |
---|---|
작업20: Metpy로 온도 단위 다뤄보기 (degC, degF) (0) | 2023.01.13 |
작업18: Metpy로 단위 달아보기 (metpy.units) (2) | 2023.01.10 |