blob: b4e82432f377b1b2df6020bea99efd0b214894d8 [file] [log] [blame]
``mx.nd.diag``
============================
Description
----------------------
Extracts a diagonal or constructs a diagonal array.
``diag``'s behavior depends on the input array dimensions:
- 1-D arrays: constructs a 2-D array with the input as its diagonal, all other elements are zero.
- N-D arrays: extracts the diagonals of the sub-arrays with axes specified by ``axis1`` and ``axis2``.
The output shape would be decided by removing the axes numbered ``axis1`` and ``axis2`` from the
input shape and appending to the result a new axis with the size of the diagonals in question.
For example, when the input shape is `(2, 3, 4, 5)`, ``axis1`` and ``axis2`` are 0 and 2
respectively and ``k`` is 0, the resulting shape would be `(3, 5, 2)`.
**Example**::
x = [[1, 2, 3],
[4, 5, 6]]
diag(x) = [1, 5]
diag(x, k=1) = [2, 6]
diag(x, k=-1) = [4]
x = [1, 2, 3]
diag(x) = [[1, 0, 0],
[0, 2, 0],
[0, 0, 3]]
diag(x, k=1) = [[0, 1, 0],
[0, 0, 2],
[0, 0, 0]]
diag(x, k=-1) = [[0, 0, 0],
[1, 0, 0],
[0, 2, 0]]
x = [[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]]]
diag(x) = [[1, 7],
[2, 8]]
diag(x, k=1) = [[3],
[4]]
diag(x, axis1=-2, axis2=-1) = [[1, 4],
[5, 8]]
Arguments
------------------
+----------------------------------------+------------------------------------------------------------+
| Argument | Description |
+========================================+============================================================+
| ``data`` | NDArray-or-Symbol. |
| | |
| | Input ndarray |
+----------------------------------------+------------------------------------------------------------+
| ``k`` | int, optional, default='0'. |
| | |
| | Diagonal in question. The default is 0. Use k>0 for |
| | diagonals above the main diagonal, and k<0 for diagonals |
| | below the main diagonal. If input has shape (S0 S1) k must |
| | be between -S0 and |
| | S1 |
+----------------------------------------+------------------------------------------------------------+
| ``axis1`` | int, optional, default='0'. |
| | |
| | The first axis of the sub-arrays of interest. Ignored when |
| | the input is a 1-D |
| | array. |
+----------------------------------------+------------------------------------------------------------+
| ``axis2`` | int, optional, default='1'. |
| | |
| | The second axis of the sub-arrays of interest. Ignored |
| | when the input is a 1-D |
| | array. |
+----------------------------------------+------------------------------------------------------------+
Value
----------
``out`` The result mx.ndarray
Link to Source Code: http://github.com/apache/incubator-mxnet/blob/1.6.0/src/operator/tensor/diag_op.cc#L87