scipy.sparse.coo_array.

dot#

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

返回两个数组的点积。

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

因此,如果两个数组都是一维的,则返回内积。如果两个都是二维的,则进行矩阵乘法。如果 other 是一维的,则沿着每个数组的最后一个轴取乘积和。如果 other 是 N 维的,对于 N>=2,则乘积和是在第一个数组的最后一个轴和第二个数组的倒数第二个轴上进行的。

参数:
other类似数组(密集或稀疏)

第二个数组

返回:
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)

对于二维数组,它是矩阵乘积

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

对于三维数组,形状会通过其他未使用的轴扩展未使用的轴。

>>> 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)