10강 / 20강

numpy — 숫자 덩어리를 한꺼번에

2만 개 유전자에 반복문을 쓰지 않는 법

numpy — 숫자 덩어리를 한꺼번에
하나씩 도는 대신 덩어리째 계산합니다. 훨씬 빠르고, 훨씬 짧습니다.

유전자 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 브라우저에서 실행
🤔 확인 문제
유전자 × 표본 표에서 유전자마다 평균을 구하려면?