10강 / 20강
numpy — 숫자 덩어리를 한꺼번에
2만 개 유전자에 반복문을 쓰지 않는 법
유전자 2만 개의 log2 를 구한다고 합시다. 리스트로는 이렇게 됩니다.
결과 = []
for v in 발현량:
결과.append(math.log2(v + 1))
numpy 를 쓰면 한 줄입니다.
결과 = np.log2(발현량 + 1)
짧기만 한 것이 아니라 훨씬 빠릅니다 — 반복이 파이썬이 아니라 C 로 짜인 안쪽에서 돌기 때문이에요.
<code>발현[높은가]</code> 처럼 <b>참거짓 배열로 고르는 것</b>이 numpy 의 핵심입니다.
Python
브라우저에서 실행
2차원 — 유전자 × 표본
발현량 표는 보통 행이 유전자, 열이 표본입니다. numpy 는 이것을 2차원 배열로 담습니다.
shape = (유전자 수, 표본 수)
그리고 축(axis) 을 골라 계산합니다 —
axis=0 은 열마다(표본마다), axis=1 은 행마다(유전자마다).
축을 헷갈리면 값이 조용히 틀립니다. 결과의 <b>개수</b>로 확인하는 습관을 들이세요.
Python
브라우저에서 실행
🤔 확인 문제
유전자 × 표본 표에서 유전자마다 평균을 구하려면?
해설 행이 유전자이므로 행 방향(axis=1) 으로 접습니다. 결과 개수가 유전자 수와 같은지 확인하면 헷갈리지 않아요.