2015-07-05 83 views

回答

4

可能這樣做的最簡單方法是記憶只有不可變對象的版本。

說你的函數需要一個np.array,我們假設它是一個1d數組。幸運的是,它很容易轉換爲tuple

import numpy as np 

a = np.array([1, 2, 3, 4]) 
>> tuple(a) 
(1, 2, 3, 4) 

,反之亦然:

>> np.array(tuple(a)) 
array([1, 2, 3, 4]) 

所以你喜歡的東西

# Function called by the rest of your program 
array_foo(a) # `a` is an `np.array` 
    ... 
    return tuple_foo(tuple(a)) 

然後memoize的不是此函數:

# Internal implementation 
@functools.lru_cache 
tuple_foo(t) # `t` is a tuple 
    ... 
    a = np.array(t) 
+0

是的,我認爲這是SIM夠了。 – iuradz

相關問題