2014-01-12 5 views
1

У меня есть разреженная матрица:SQRT для поэлементно разреженной матрицы

from scipy import sparse 
a = sparse.diags([1,4,9],[-1,0,1],shape =(10,10),format ="csr") 

Я хочу взять квадратный корень каждые из элементов в разреженных матрицах Я смотрю в Интернете, и это говорит, что я может использовать numpy.sqrt() для реализации этого. Но ошибка:

b = numpy.sqrt(a) 
    AttributeError: sqrt 

Как я могу это сделать?

+2

Думаю, на ваш вопрос ответил [здесь] (http://stackoverflow.com/questions/8906506/how-to-operate-elementwise-on-a-matrix-of-type-scipy- sparse-csr-matrix): вы можете использовать 'a.sqrt()' или действовать на 'a.data' для всего, что не имеет собственного крючка. – DSM

+0

@DSM: 'a.sqrt()' должен быть ответом. –

+0

@ DSM спасибо. Работает a.sqrt(). Просто нужно убедиться, что установлена ​​правильная версия scipy. –

ответ

2

Caveat, это создаст результирующий numpy ndarray вместо разреженного массива csr.

from scipy import sparse 
a = sparse.diags([1,4,9],[-1,0,1],shape =(10,10),format ="csr") 

numpy.sqrt(a.data) 

Насколько я могу сказать, большинство других ufunc операций (синус, косинус, ...) действительно есть редкое ufuncs за SQRT исключения, не знает почему. См. Этот вопрос: https://github.com/scipy/scipy/pull/208

 Смежные вопросы

  • Нет связанных вопросов^_^