dpnp.linalg.qr¶
- dpnp.linalg.qr(a, mode='reduced')[source]¶
Compute the qr factorization of a matrix.
Factor the matrix a as qr, where q is orthonormal and r is upper-triangular.
For full documentation refer to
numpy.linalg.qr.- Parameters:
- a{dpnp.ndarray, usm_ndarray}
The input array with the dimensionality of at least 2.
- mode{"reduced", "complete", "r", "raw"}, optional
If K = min(M, N), then
"reduced" : returns Q, R with dimensions (…, M, K), (…, K, N)
"complete" : returns Q, R with dimensions (…, M, M), (…, M, N)
"r" : returns R only with dimensions (…, K, N)
"raw" : returns h, tau with dimensions (…, N, M), (…, K,)
Default:
"reduced".
- Returns:
- When mode is "reduced" or "complete", the result will be a namedtuple with
- the attributes Q and R:
- Qdpnp.ndarray of float or complex, optional
A matrix with orthonormal columns. When mode is
"complete"the result is an orthogonal/unitary matrix depending on whether or not a is real/complex. The determinant may be either+/- 1in that case. In case the number of dimensions in the input array is greater than 2 then a stack of the matrices with above properties is returned.- Rdpnp.ndarray of float or complex, optional
The upper-triangular matrix or a stack of upper-triangular matrices if the number of dimensions in the input array is greater than 2.
- (h, tau)tuple of dpnp.ndarray of float or complex, optional
The array h contains the Householder reflectors that generate Q along with R. The tau array contains scaling factors for the reflectors.
Examples
>>> import dpnp as np >>> a = np.random.randn(9, 6) >>> Q, R = np.linalg.qr(a) >>> np.allclose(a, np.dot(Q, R)) # a does equal QR array([ True]) >>> R2 = np.linalg.qr(a, mode='r') >>> np.allclose(R, R2) # mode='r' returns the same R as mode='full' array([ True]) >>> a = np.random.normal(size=(3, 2, 2)) # Stack of 2 x 2 matrices as input >>> Q, R = np.linalg.qr(a) >>> Q.shape (3, 2, 2) >>> R.shape (3, 2, 2) >>> np.allclose(a, np.matmul(Q, R)) array([ True])