numpy.linalg.tensorsolve#
- linalg.tensorsolve(a, b, axes=None)[原始碼]#
求解張量方程式
a x = b
以求 x。假設 x 的所有索引都在乘積中加總,連同 a 的最右邊索引,例如
tensordot(a, x, axes=x.ndim)
中的作法。- 參數:
- aarray_like
係數張量,形狀為
b.shape + Q
。Q (一個元組) 等於 a 的子張量的形狀,該子張量由其最右邊的適當數量的索引組成,且必須滿足prod(Q) == prod(b.shape)
(從這個意義上來說,a 被稱為「方陣」)。- barray_like
右側張量,可以是任何形狀。
- axestuple of ints, optional
在反轉之前,a 中要重新排序到右側的軸。如果為 None (預設值),則不執行重新排序。
- 返回:
- xndarray,形狀 Q
- 引發:
- LinAlgError
如果 a 是奇異的或不是「方陣」(在上述意義上)。
範例
>>> import numpy as np >>> a = np.eye(2*3*4) >>> a.shape = (2*3, 4, 2, 3, 4) >>> rng = np.random.default_rng() >>> b = rng.normal(size=(2*3, 4)) >>> x = np.linalg.tensorsolve(a, b) >>> x.shape (2, 3, 4) >>> np.allclose(np.tensordot(a, x, axes=3), b) True