diag¶
- paddle. diag ( x, offset=0, padding_value=0, name=None ) [source]
- 
         If xis a vector (1-D tensor), a 2-D square tensor with the elements ofxas the diagonal is returned.If xis a matrix (2-D tensor), a 1-D tensor with the diagonal elements ofxis returned.The argument offsetcontrols the diagonal offset:If offset= 0, it is the main diagonal.If offset> 0, it is superdiagonal.If offset< 0, it is subdiagonal.- Parameters
- 
           - x (Tensor) – The input tensor. Its shape is either 1-D or 2-D. Its data type should be float32, float64, int32, int64. 
- offset (int, optional) – The diagonal offset. A positive value represents superdiagonal, 0 represents the main diagonal, and a negative value represents subdiagonal. 
- padding_value (int|float, optional) – Use this value to fill the area outside the specified diagonal band. Only takes effect when the input is a 1-D Tensor. The default value is 0. 
- name (str, optional) – For details, please refer to Name. Generally, no setting is required. Default: None. 
 
- Returns
- 
           Tensor, a square matrix or a vector. The output data type is the same as input data type. 
 Examples import paddle paddle.disable_static() x = paddle.to_tensor([1, 2, 3]) y = paddle.diag(x) print(y) # Tensor(shape=[3, 3], dtype=int64, place=Place(cpu), stop_gradient=True, # [[1, 0, 0], # [0, 2, 0], # [0, 0, 3]]) y = paddle.diag(x, offset=1) print(y) # Tensor(shape=[4, 4], dtype=int64, place=Place(cpu), stop_gradient=True, # [[0, 1, 0, 0], # [0, 0, 2, 0], # [0, 0, 0, 3], # [0, 0, 0, 0]]) y = paddle.diag(x, padding_value=6) print(y) # Tensor(shape=[3, 3], dtype=int64, place=Place(cpu), stop_gradient=True, # [[1, 6, 6], # [6, 2, 6], # [6, 6, 3]]) import paddle paddle.disable_static() x = paddle.to_tensor([[1, 2, 3], [4, 5, 6]]) y = paddle.diag(x) print(y) # Tensor(shape=[2], dtype=int64, place=Place(cpu), stop_gradient=True, # [1, 5]) y = paddle.diag(x, offset=1) print(y) # Tensor(shape=[2], dtype=int64, place=Place(cpu), stop_gradient=True, # [2, 6]) y = paddle.diag(x, offset=-1) print(y) # Tensor(shape=[1], dtype=int64, place=Place(cpu), stop_gradient=True, # [4]) 
