본문 바로가기

Numpy

Numpy - apply_along_axis

반응형
[apply_along_axis]

판다스의 apply처럼 이용하는 기능이지만


array일때 실행속도가 월등히 빠르다.


import numpy as np

np.apply_along_axis(함수, 축(axis), 배열(arr))

 

 

 

 

 

예시1 - 작은 데이터프레임

 

 

 

10행 10열의 데이터프레임을 만들었다.

 

각 열별로 최댓값에서 최솟값을 빼는 연산을 lambda로 실행한다.

 

 

 

 

 

1-1. 판다스 - apply

 

 

실행 시간은 0.009초 상당히 빨리 진행됐다.

 

* 실행 할때마다 시간은 달리 나온다.

 

 

 

 

 

1-2. Numpy - apply_along_axis

 

 

apply_along_axis는 0.0초가 소요됐다.

 

결과는 result1과는 달리 배열 형태로 나왔다.

 

(이를 데이터프레임의 컬럼으로 추가해주면 된다.)

 

 

 

 

 

이번엔 1만 개의 행 x 1만 개의 컬럼으로 구성된 큰 데이터프레임으로 살펴보자.

 

 

 

 

예시2 - 큰 데이터프레임

 

 

 

예시1과 같은 함수를 적용하며, 결과 출력은 생략한다.

 

 

 

 

 

2-1. 판다스 - apply

 

 

판다스의 apply는 약 30초가 걸렸다.

 

 

 

 

 

 

2-2. Numpy - apply_along_axis

 

 

 

apply_along_axis는 5초밖에 걸리지 않았다.

 

 

 

 

 

 

 

 

2-3 - values를 이용해서 배열로 뽑아낸 뒤 실행

 

 

df.values를 이용해 array를 뽑아낸 뒤 arr에 해당 array를 넣어서 진행해도

 

2-2번의 결과와 비슷한 속도를 보여준다.

 

 

 

** array.apply_along_axis는 불가

 

 

 

 

 

응용 - 홀수 컬럼만 (5제곱) 함수 적용하기

 

 

 

(1) 홀수 컬럼만 배열로 빼내오기

 

 

 

 

(2) 4.8초만에 결과 리턴 받기

 

 

 

 

(3) 리턴 받은 배열을 홀수 컬럼으로 대체하기

 

반응형