tensordot¶
- tensordot(x1: array, x2: array, /, *, axes: int | Tuple[Sequence[int], Sequence[int]] = 2) array ¶
Returns a tensor contraction of
x1
andx2
over specific axes.- Parameters:
x1 (array) – first input array. Should have a numeric data type.
x2 (array) – second input array. Should have a numeric data type. Corresponding contracted axes of
x1
andx2
must be equal.axes (Union[int, Tuple[Sequence[int], Sequence[int]]]) –
number of axes to contract or explicit sequences of axis indices for
x1
andx2
, respectively.If
axes
is anint
equal toN
, then contraction must be performed over the lastN
axes ofx1
and the firstN
axes ofx2
in order. The size of each corresponding axis must match. An integeraxes
value must be nonnegative.If
N
equals0
, the result must be the tensor (outer) product.If
N
equals1
, the result must be the tensor dot product.If
N
equals2
, the result must be the tensor double contraction (default).
If
axes
is a tuple of two sequences(x1_axes, x2_axes)
, the first sequence must apply tox1
and the second sequence must apply tox2
. Both sequences must have the same length. Each axisx1_axes[i]
forx1
must have the same size as the respective axisx2_axes[i]
forx2
. Each index referred to in a sequence must be unique. A valid axis must be an integer on the interval[-S, S)
, whereS
is the number of axes in respective array. Hence, ifx1
hasN
axes, a validx1
axes must be an integer on the interval[-N, N)
. Ifx2
hasM
axes, a validx2
axes must be an integer on the interval[-M, M)
. If an axis is specified as a negative integer, the function must determine the axis along which to perform the operation by counting backward from the last axis (where-1
refers to the last axis). If provided an invalid axis, the function must raise an exception.
- Returns:
out (array) – an array containing the tensor contraction. The returned array must have a shape which consists of the non-contracted axes of the first array
x1
, followed by the non-contracted axes of the second arrayx2
. The returned array must have a data type determined by Type Promotion Rules.
Notes
The
tensordot
function corresponds to the generalized matrix product.Contracted axes must not be broadcasted.
If either
x1
orx2
has a complex floating-point data type, the function must not complex-conjugate or transpose either argument. If conjugation and/or transposition is desired, a user can explicitly perform these operations prior to computing the generalized matrix product.
Changed in version 2022.12: Added complex data type support.
Changed in version 2023.12: Allow negative axes.