2014-11-12 4 views
1

Я пытаюсь найти максимальное значение в матрице scipy.sparse. Документы here говорят, что существует метод .max. Однако, как ни странно, это не работает для меня:max of scipy.sparse.csr_matrix

>>> import scipy.sparse as sps 
>>> a = sps.csr_matrix((3,3)) 
>>> a[0,0] = 1 
>>> a.max() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File  "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/scipy/sparse/base.py", line 393, in __getattr__ 
raise AttributeError(attr + " not found") 
AttributeError: max not found 

Любая идея, почему это может произойти?

(я использую SciPy версии 0.11.0)

ответ

1

Некоторые археология в scipy docs website показывает, что метод вводится в SciPy 13,0.

Если вы не хотите обновлять, вы можете получить максимум ненулевых записей вашей разреженной матрицы с помощью a.data.max().

Если вы хотите, чтобы это было максимально учитывая нули, а также, что и делает метод .max(), сделать что-то вдоль линий:

m = a.data.max() 
if m < 0 and a.nnz < a.shape[0]*a.shape[1]: 
    m = 0 
Смежные вопросы