Как поднять матрицу scipy.sparse
по мощности, по элементам? numpy.power
должен, согласно its manual, сделать это, но он не на разреженных матриц:Element-wise power of scipy.sparse matrix
>>> X
<1353x32100 sparse matrix of type '<type 'numpy.float64'>'
with 144875 stored elements in Compressed Sparse Row format>
>>> np.power(X, 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File ".../scipy/sparse/base.py", line 347, in __pow__
raise TypeError('matrix is not square')
TypeError: matrix is not square
Та же проблема с X**2
. Преобразование в плотный массив работает, но тратит драгоценные секунды.
У меня была та же проблема с np.multiply
, которую я решил использовать методом разреженной матрицы multiply
, но, похоже, нет метода pow
.
Я не достаточно знаком с numpy, чтобы сообщить вам ответ, но ваш код не противоречит документации. Второй аргумент numpy.power не должен быть числом, а другой матрицей. – RoundTower
Похоже, что он вызывает метод '__pow__' объекта, который пытается скопировать всю матрицу, а не делать это по-разному. Это терпит неудачу, потому что, как говорится, матрица не квадратная. –
@RoundTower: фактически, второй элемент должен быть массивом, который он не совпадает с матрицей в Numpy, но скаляр такой же, как и массив '(1,)' или '(1,1)' для цели 'numpy.power' на плотном массиве. –