2015-07-05 2 views

ответ

4

Возможно, самым простым способом является сохранение версии, содержащей только неизменяемые объекты.

Скажите, что ваша функция принимает np.array, и предположим, что это 1-й массив. К счастью, это легко переводится на 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

Да, я думаю, это сим вдоволь. – iuradz