2013-12-21 3 views
3

나는 하루 종일 numba 문서에서 유형을 설정하는 방법을 추론하려고 노력해 왔습니다. 저는 약간의 방법을 가졌지 만, 이제는 1 차원 배열과 2 차원 배열을 반환하는 함수를 만들고 싶습니다. 그리고 많은 args를 취해서 더 많은 것을 얻으 려합니다.Python numba.jit types

@jit 
class name(object) 
    @double[:,:], double[:](double[:], double, double, int64) 
    def solve(self, u0, a, b, n): 
     self.t = linspace(a, b, n+1) 
     dt = abs((b-a)/float(n)) 
     u = zeros(n+1, len([u0])) 
     u[0] = u0 
     u = advance(u, t, n, dt) 
     return u.transpose(), t.transpose() 

위는 이러한 예외를 throw :

Traceback (most recent call last): 
    File "/home/marius/dev/python/inf1100/test_ODE.py", line 2, in <module> 
    from DE import * 
    File "/home/marius/dev/python/inf1100/DE.py", line 13 
    @double[:,:], double[:](double[:], double, double, int64) 
     ^
SyntaxError: invalid syntax 

당신이 엄격하게이 구문을 한 번 설명하는 문서를 추천 할 수 있다면 당신은, 그러나 그것은 더 나은 것, 잘못 무슨 일이 일어나고 있는지 말해 줄 수 있다면 그것은 좋은 것 및 모든.

감사합니다.

종류와 관련,

답변

2

마리우스 여기 튜플을 반환하는 방법의 간단한 버전입니다. 를 사용하여 다음

import numba 
import numpy as np 

@numba.jit 
class name(object): 
    @numba.object_(numba.double[:], numba.double) 
    def solve(self, x, a): 
     y = np.empty(x.shape[0], dtype=np.float64) 
     z = np.empty(x.shape[0], dtype=np.float64) 
     for k in xrange(x.shape[0]): 
      y[k] = x[k] * a 
      z[k] = x[k] + a 

     return y, z 

:이 OS의 X에 Numba의 0.11.1을 사용하여 나를 위해 작동

ab
C = name() 
a, b = C.solve(np.arange(5, dtype=np.float64), 3.0) 

:

In [24]: a 
Out[24]: 
array([ 0., 3., 6., 9., 12.]) 
In [22]: b 
Out[22]: 
array([ 3., 4., 5., 6., 7.]) 
+0

이 오래된 것으로 보인다 버전 0.24.0부터. numba.object_는 존재하지 않으며 대체 된 내용이 확실하지 않습니다. –