dpnp.diag_indices
- dpnp.diag_indices(n, ndim=2, device=None, usm_type='device', sycl_queue=None)[source]
Return the indices to access the main diagonal of an array.
This returns a tuple of indices that can be used to access the main diagonal of an array a with
a.ndim >= 2
dimensions and shape (n, n, ..., n). Fora.ndim = 2
this is the usual diagonal, fora.ndim > 2
this is the set of indices to accessa[i, i, ..., i]
fori = [0..n-1]
.For full documentation refer to
numpy.diag_indices
.- Parameters:
n (int) -- The size, along each dimension, of the arrays for which the returned indices can be used.
ndim (int, optional) -- The number of dimensions. Default:
2
.device ({None, string, SyclDevice, SyclQueue}, optional) -- An array API concept of device where the output array is created. The device can be
None
(the default), an OneAPI filter selector string, an instance ofdpctl.SyclDevice
corresponding to a non-partitioned SYCL device, an instance ofdpctl.SyclQueue
, or a Device object returned bydpnp.dpnp_array.dpnp_array.device
property.usm_type ({"device", "shared", "host"}, optional) -- The type of SYCL USM allocation for the output array.
sycl_queue ({None, SyclQueue}, optional) -- A SYCL queue to use for output array allocation and copying. The sycl_queue can be passed as
None
(the default), which means to get the SYCL queue from device keyword if present or to use a default queue. Default:None
.
- Returns:
out -- The indices to access the main diagonal of an array.
- Return type:
tuple of dpnp.ndarray
See also
dpnp.diag_indices_from
Return the indices to access the main diagonal of an n-dimensional array.
Examples
Create a set of indices to access the diagonal of a (4, 4) array:
>>> import dpnp as np >>> di = np.diag_indices(4) >>> di (array([0, 1, 2, 3]), array([0, 1, 2, 3])) >>> a = np.arange(16).reshape(4, 4) >>> a array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]) >>> a[di] = 100 >>> a array([[100, 1, 2, 3], [ 4, 100, 6, 7], [ 8, 9, 100, 11], [ 12, 13, 14, 100]])
Now, we create indices to manipulate a 3-D array:
>>> d3 = np.diag_indices(2, 3) >>> d3 (array([0, 1]), array([0, 1]), array([0, 1]))
And use it to set the diagonal of an array of zeros to 1:
>>> a = np.zeros((2, 2, 2), dtype=int) >>> a[d3] = 1 >>> a array([[[1, 0], [0, 0]], [[0, 0], [0, 1]]])