2017-11-27 5 views
0

numba jitclass 인스턴스 (변수가 numpy 스칼라 및 배열 임)의 복사본을 만들려면 어떻게해야합니까?Numba - jitclass 인스턴스의 복사본

새 인스턴스를 만들고 루프의 모든 변수를 복사하는 것 외에 다른 방법이 있습니까? 또한 copy.copycopy.deepcopy 시도했지만 모두 (AN issue을 여는 고려) 나는이 지원할 수있는 뭔가 numba입니다 원칙적으로 상상하는 것 TypeError: can't pickle MyJitClassName objects

답변

2

실패하지만 지금은 내가 유일한 옵션은 자신을 정의하는 것입니다 생각합니다.

jitclasses는 배열에 대한 참조를 보유하므로 기본 데이터를 복사하려면 array.copy()이 필요합니다. 이 난 단지 비어있는 새 인스턴스를 초기화하고 specs``의 모든 바르 루핑 및 점검하고 결국 무엇

from numba import jitclass, float64 
spec = [ 
    ('scalar', float64), 
    ('array', float64[:]), 
] 

@jitclass(spec) 
class MyJitClass: 
    def __init__(self, scalar, array): 
     self.scalar = scalar 
     self.array = array 

    def copy(self): 
     return MyJitClass(self.scalar, self.array.copy()) 
+0

'isinstance (VAR, numba.types.npytypes.Array)의 경우 : 않은 setattr (new_instance, var, getattr (self, var) .copy())'. 당신이 말했듯이 그것은 이상적이지 않습니다. – nivniv

관련 문제