2
numba를 사용하여 np.take의 속도를 높일 수 있습니까?numba로 속도가 빨라 졌습니까?
여기 내 시도이지만, 훨씬 느립니다. nopthon 모드는 np.empty_like 명령을 좋아하지 않으므로 사용할 수 없습니다. 결과가
import numba
import numpy as np
from timer import Timer
def take(x, indices):
result = np.empty_like(indices, dtype=x.dtype)
for i in range(len(indices)):
result[i] = x[ indices[ i ] ]
return result
jtake = numba.jit("f4[:](f4[:],i4[:])")(take)
if __name__=='__main__':
N = 100000
m = 100
idx = np.random.random_integers(0, N, m)
x = np.random.randn(N)
num_tests=10000
with Timer('take'):
for i in range(num_tests):
r0 = take(x, idx)
with Timer('Numba take'):
for i in range(num_tests):
r1 = jtake(x, idx)
with Timer('Numpy.take'):
for i in range(num_tests):
r2 = x.take(idx)
:
Beginning take
take took 2.46 seconds
Beginning Numba take
Numba take took 1.11 seconds
Beginning Numpy.take
Numpy.take took 0.04 seconds
"numba를 사용하여 np.take의 속도를 높일 수 있습니까?" 나는 네가 할 수 있을지 의심 스럽다. – YXD