2015-07-05 49 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

相关问题