numpy.linalg.tensorinv#

linalg.tensorinv(a,ind=2)[source]#

Compute the ‘inverse’ of an N-dimensional array.

The result is an inverse fora relative to the tensordot operationtensordot(a,b,ind), i. e., up to floating-point accuracy,tensordot(tensorinv(a),a,ind) is the “identity” tensor for thetensordot operation.

Parameters:
aarray_like

Tensor to ‘invert’. Its shape must be ‘square’, i. e.,prod(a.shape[:ind])==prod(a.shape[ind:]).

indint, optional

Number of first indices that are involved in the inverse sum.Must be a positive integer, default is 2.

Returns:
bndarray

a’s tensordot inverse, shapea.shape[ind:]+a.shape[:ind].

Raises:
LinAlgError

Ifa is singular or not ‘square’ (in the above sense).

Examples

>>>importnumpyasnp>>>a=np.eye(4*6)>>>a.shape=(4,6,8,3)>>>ainv=np.linalg.tensorinv(a,ind=2)>>>ainv.shape(8, 3, 4, 6)>>>rng=np.random.default_rng()>>>b=rng.normal(size=(4,6))>>>np.allclose(np.tensordot(ainv,b),np.linalg.tensorsolve(a,b))True
>>>a=np.eye(4*6)>>>a.shape=(24,8,3)>>>ainv=np.linalg.tensorinv(a,ind=1)>>>ainv.shape(8, 3, 24)>>>rng=np.random.default_rng()>>>b=rng.normal(size=24)>>>np.allclose(np.tensordot(ainv,b,1),np.linalg.tensorsolve(a,b))True
On this page