dot#
- coo_array.dot(other)[источник]#
Возвращает скалярное произведение двух массивов.
Строго говоря, скалярное произведение включает два вектора. Но в том смысле, что массив с ndim >= 1 является коллекцией векторов, функция вычисляет коллекцию скалярных произведений между каждым вектором в первом массиве и каждым вектором во втором массиве. Ось, по которой выполняется сумма произведений, является последней осью первого массива и предпоследней осью второго массива. Если второй массив одномерный, используется последняя ось.
Таким образом, если оба массива одномерные, возвращается скалярное произведение. Если оба двумерные, мы имеем матричное умножение. Если other является одномерным, суммарное произведение берется вдоль последней оси каждого массива. Если other является N-мерным для N>=2, произведение суммы выполняется по последней оси первого массива и предпоследней оси второго массива.
- Параметры:
- otherarray_like (плотный или разреженный)
Второй массив
- Возвращает:
- выводмассив (разреженный или плотный)
Скалярное произведение этого массива с 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)