Я пытаюсь создать разреженную матрицу, используя пакет scipy. Почему следующий код не работает? Я пробую это также в петлях.
import numpy
from scipy import sparse
from scipy.sparse import coo_matrix
def SparseMatrixPower(A,p):
if p == 1:
return(A)
elif Mod(p,2):
return(SparseMatrixPower(A,SparseMatrixProduct(A,A)), (p - 1) / 2)
else:
return(SparseMatrixPower(SparseMatrixProduct(A,A), p / 2))
def SparseMatrixProduct(A,B):
return(sparse.kron(A,B)+sparse.kronsum(A,B))
A=sparse.coo_matrix([[0,1,2],[1,1,2],[2,2,3]])
B=sparse.coo_matrix([[0,1,2],[1,1,2],[2,2,3]])
SparseMatrixProduct(A,B)
SparseMatrixPower(A,3)
Ниже выводится сообщение об ошибке:
ValueError Traceback (последний последний вызов) в () 19 B = sparse.coo_matrix ([[Integer (0) ), Целое число (1), Целое число (2)], [Целое число (1), Целое число (1), Целое число (2)], [Целое число (2), Целое число (2), Целое число (3)]]) 20 SparseMatrixProduct (A, B) ---> 21 SparseMatrixPower (A, целое число (11))
<ipython-input-7-9b98e47610f5> in SparseMatrixPower(A, p)
9 return(A)
10 elif Mod(p,Integer(2)):
---> 11 return(SparseMatrixPower(A,SparseMatrixProduct(A,A)), (p - Integer(1)) / Integer(2))
12 else:
13 return(SparseMatrixPower(SparseMatrixProduct(A,A), p / Integer(2)))
<ipython-input-7-9b98e47610f5> in SparseMatrixPower(A, p)
6
7 def SparseMatrixPower(A,p):
----> 8 if p == Integer(1):
9 return(A)
10 elif Mod(p,Integer(2)):
/home/calc/SageMath/local/lib/python3.7/site-packages/scipy/sparse/base.py in __bool__(self)
286 return self.nnz != 0
287 else:
--> 288 raise ValueError("The truth value of an array with more than one "
289 "element is ambiguous. Use a.any() or a.all().")
290 __nonzero__ = __bool__
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all().