scipy.sparse.coo_matrix.

点积#

coo_matrix.dot(other)[源代码]#

返回两个数组的点积。

严格来说,点积涉及两个向量。但是,在 ndim >= 1 的数组是向量集合的意义上,该函数计算第一个数组中每个向量与第二个数组中每个向量之间的点积集合。执行乘积和的轴是第一个数组的最后一个轴和第二个数组的倒数第二个轴。如果第二个数组是 1-D 的,则使用最后一个轴。

因此,如果两个数组都是 1-D 的,则返回内积。如果两者都是 2-D 的,我们有矩阵乘法。如果 other 是 1-D 的,则沿每个数组的最后一个轴进行乘积和。如果 other 是 N-D,其中 N>=2,则乘积和在第一个数组的最后一个轴和第二个数组的倒数第二个轴上进行。

参数:
otherarray_like(密集或稀疏)

第二个数组

返回:
output数组(稀疏或密集)

此数组与 other 的点积。如果 other 是密集/稀疏的,则它将是密集/稀疏的。

示例

>>> import numpy as np
>>> from scipy.sparse import coo_array
>>> A = coo_array([[1, 2, 0], [0, 0, 3], [4, 0, 5]])
>>> v = np.array([1, 0, -1])
>>> A.dot(v)
array([ 1, -3, -1], dtype=int64)

对于 2-D 数组,它是矩阵乘积

>>> A = coo_array([[1, 0], [0, 1]])
>>> B = coo_array([[4, 1], [2, 2]])
>>> A.dot(B).toarray()
array([[4, 1],
       [2, 2]])

对于 3-D 数组,形状通过其他未使用的轴扩展未使用的轴。

>>> A = coo_array(np.arange(3*4*5*6)).reshape((3,4,5,6))
>>> B = coo_array(np.arange(3*4*5*6)).reshape((5,4,6,3))
>>> A.dot(B).shape
(3, 4, 5, 5, 4, 3)