반응형
[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) 리턴 받은 배열을 홀수 컬럼으로 대체하기
반응형
'Numpy' 카테고리의 다른 글
Numpy - 3차원 배열 인덱싱 (0) | 2020.10.02 |
---|---|
Numpy - random : rand, randn (0) | 2020.08.12 |
Numpy - random : normal, uniform, randint, choice (0) | 2020.08.12 |
Numpy - np.log, np.log1p, np.exp (0) | 2020.08.12 |
Numpy - 등간격으로 나누기 : np.linspace (0) | 2020.08.08 |