skcuda.linalg.diag¶
-
skcuda.linalg.
diag
(v_gpu)[source]¶ Construct a diagonal matrix if input array is one-dimensional, or extracts diagonal entries of a two-dimensional array.
If input-array is one-dimensional, constructs a matrix in device memory whose diagonal elements correspond to the elements in the specified array; all non-diagonal elements are set to 0.
If input-array is two-dimensional, constructs an array in device memory whose elements correspond to the elements along the main-diagonal of the specified array.
Parameters: v_obj (pycuda.gpuarray.GPUArray) – Input array of shape (n,m). Returns: d_gpu – If v_obj has shape (n,1), output is diagonal matrix of dimensions [n, n]. If v_obj has shape (n,m), output is array of length min(n,m). Return type: pycuda.gpuarray.GPUArray Examples
>>> import pycuda.driver as drv >>> import pycuda.gpuarray as gpuarray >>> import pycuda.autoinit >>> import numpy as np >>> import skcuda.linalg as linalg >>> linalg.init() >>> v = np.array([1, 2, 3, 4, 5, 6], np.float32) >>> v_gpu = gpuarray.to_gpu(v) >>> d_gpu = linalg.diag(v_gpu) >>> np.all(d_gpu.get() == np.diag(v)) True >>> v = np.array([1j, 2j, 3j, 4j, 5j, 6j], np.complex64) >>> v_gpu = gpuarray.to_gpu(v) >>> d_gpu = linalg.diag(v_gpu) >>> np.all(d_gpu.get() == np.diag(v)) True >>> v = np.array([[1., 2., 3.],[4., 5., 6.]], np.float64) >>> v_gpu = gpuarray.to_gpu(v) >>> d_gpu = linalg.diag(v_gpu) >>> d_gpu array([ 1., 5.])