Мне нужно хранить около 50 000 scipy разреженных матриц csr, где каждая матрица представляет собой вектор длиной 3,7 миллиона:
x = scipy.sparse.csr_matrix((3.7Mill,1))
В настоящее время я храню их в простом словаре, потому что мне также нужно знать соответствующий ключ для каждого вектора (в данном случае ключ - простое целое число).
Проблема сейчас в том, что требуется огромный объем памяти. Есть ли более эффективные способы?
Ответ 1 · рейтинг 3 · ymn
Попробуйте использовать структуры данных Lazy.
Например:
def lazy(func):
def lazyfunc(*args, **kwargs):
temp = lambda x : func(*args, **kwargs)
temp.__name__ = "lazy-" + func.__name__
return temp
return lazyfunc
"""
Add some simple functions
"""
def add(x, y):
print "Not lazy"
return x + y
@lazy
def add_lazy(x, y):
print "lazy!"
return x + y
Использование:
>>> add(1, 2)
Not lazy
3
$ add_lazy(1, 2)
<function lazy-add_lazy at 0x021E9470>
>>> myval = add_lazy(1, 2)
>>> myval()
lazy!
3
Смотреть на: