1 Vectorization
파이썬에서도 R과 마찬가지로 벡터화(vectorization)가 존재한다. 벡터화는 파이썬에서 반복문을 사용하는 대신 NumPy나 Pandas와 같은 라이브러리를 활용하여 데이터 전체에 대한 연산을 한 번에 수행하는 방식이다.
1.1 벡터화의 정의
벡터화는 데이터의 각 요소에 대해 반복적으로 함수를 적용하는 대신, 전체 데이터 배열에 한 번에 연산을 적용하는 것을 의미한다. 예를 들어 filtered_data.apply(lambda x: np.abs(x).mean())와 같은 코드는 각 열에 대해 벡터화된 연산을 수행한다.
1.2 벡터화의 장점
성능 향상: 파이썬의 for 루프는 상대적으로 느리지만, 벡터화된 연산은 C로 작성된 최적화된 코드를 사용하므로 훨씬 빠르다.
코드 간결성: 벡터화를 사용하면 코드가 더 짧고 읽기 쉬워진다.
메모리 효율성: 벡터화된 연산은 메모리 사용을 최적화하여 중간 결과를 저장하기 위한 추가 메모리가 적게 필요하다.
병렬 처리 활용: 벡터화된 연산은 내부적으로 병렬 처리를 활용하여 성능을 향상시킬 수 있다.
1.3 벡터화하지 않은 코드 vs 벡터화한 코드
벡터화하지 않은 코드:
if not filtered_data.empty:
length = len(filtered_data)
absolute_means = {}
squared_means = {}
for column in filtered_data.columns:
abs_sum = 0
squared_sum = 0
for value in filtered_data[column]:
abs_sum += abs(value)
squared_sum += value ** 2
absolute_means[column] = abs_sum / length
squared_means[column] = squared_sum / length벡터화한 코드:
absolute_means = filtered_data.apply(lambda x: np.abs(x).mean())
squared_means = filtered_data.apply(lambda x: (x ** 2).mean())이 코드는 명시적인 반복문을 사용하므로 대용량 데이터셋에서는 벡터화된 버전보다 훨씬 느리게 실행된다.