**已针对实施
csr_matrix。有一种
__pow__方法。
处理一些特殊情况后,它
__pow__可以:
tmp = self.__pow__(other//2) if (other % 2): return self * tmp * tmp else: return tmp * tmp
对于稀疏矩阵,
*是矩阵乘积(
dot对于ndarray)。因此它正在做递归乘法。
如前所述
math,
np.matrix还将
**(
__pow__)实现为矩阵幂。实际上,它最终会调用
np.linalg.matrix_power。
np.linalg.matrix_power(M, n)是用Python编写的,因此您可以轻松查看其功能。
因为
n<=3只是重复
dot。
对于较大的
n,它将执行二进制分解以减少
dots的总数。我认为这意味着
n=4:
result = np.dot(M,M)result = np.dot(result,result)
稀疏版本并不通用。它只能处理正整数幂。
您不能指望
numpy在备用矩阵上运行的函数。起作用的是将操作传递给数组自己的方法的那些。例如
np.sum(A)电话
A.sum()。



