本文整理匯總了Python中numpy.diagonal方法的典型用法代碼示例。如果您正苦於以下問題:Python numpy.diagonal方法的具體用法?Python numpy.diagonal怎麽用?Python numpy.diagonal使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類numpy
的用法示例。
在下文中一共展示了numpy.diagonal方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: CRE
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import diagonal [as 別名]
def CRE(size):
r"""Circular real ensemble (CRE).
Parameters
----------
size : tuple
``(n, n)``, where `n` is the dimension of the output matrix.
Returns
-------
U : ndarray
Orthogonal matrix drawn from the CRE (=Haar measure on O(n)).
"""
# almost same code as for CUE
n, m = size
assert n == m # ensure that `mode` in qr doesn't matter.
A = np.random.standard_normal(size)
Q, R = np.linalg.qr(A)
# Q-R is not unique; to make it unique ensure that the diagonal of R is positive
# Q' = Q*L; R' = L^{-1} *R, where L = diag(phase(diagonal(R)))
L = np.diagonal(R)
Q *= np.sign(L)
return Q
示例2: CUE
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import diagonal [as 別名]
def CUE(size):
r"""Circular unitary ensemble (CUE).
Parameters
----------
size : tuple
``(n, n)``, where `n` is the dimension of the output matrix.
Returns
-------
U : ndarray
Unitary matrix drawn from the CUE (=Haar measure on U(n)).
"""
# almost same code as for CRE
n, m = size
assert n == m # ensure that `mode` in qr doesn't matter.
A = standard_normal_complex(size)
Q, R = np.linalg.qr(A)
# Q-R is not unique; to make it unique ensure that the diagonal of R is positive
# Q' = Q*L; R' = L^{-1} *R, where L = diag(phase(diagonal(R)))
L = np.diagonal(R).copy()
L[np.abs(L) < 1.e-15] = 1.
Q *= L / np.abs(L)
return Q
示例3: O_close_1
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import diagonal [as 別名]
def O_close_1(size, a=0.01):
r"""return an random orthogonal matrix 'close' to the Identity.
Parameters
----------
size : tuple
``(n, n)``, where `n` is the dimension of the output matrix.
a : float
Parameter determining how close the result is on `O`;
:math:`\lim_{a \rightarrow 0} <|O-E|>_a = 0`` (where `E` is the identity).
Returns
-------
O : ndarray
Orthogonal matrix close to the identiy (for small `a`).
"""
n, m = size
assert n == m
A = GOE(size) / (2. * n)**0.5 # scale such that eigenvalues are in [-1, 1]
E = np.eye(size[0])
Q, R = np.linalg.qr(E + a * A)
L = np.diagonal(R) # make QR decomposition unique & ensure Q is close to one for small `a`
Q *= np.sign(L)
return Q
示例4: log_multivariate_normal_density
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import diagonal [as 別名]
def log_multivariate_normal_density(X, means, covars, min_covar=1.e-7):
"""Log probability for full covariance matrices. """
if hasattr(linalg, 'solve_triangular'):
# only in scipy since 0.9
solve_triangular = linalg.solve_triangular
else:
# slower, but works
solve_triangular = linalg.solve
n_samples, n_dim = X.shape
nmix = len(means)
log_prob = np.empty((n_samples, nmix))
for c, (mu, cv) in enumerate(zip(means, covars)):
try:
cv_chol = linalg.cholesky(cv, lower=True)
except linalg.LinAlgError:
# The model is most probabily stuck in a component with too
# few observations, we need to reinitialize this components
cv_chol = linalg.cholesky(cv + min_covar * np.eye(n_dim),
lower=True)
cv_log_det = 2 * np.sum(np.log(np.diagonal(cv_chol)))
cv_sol = solve_triangular(cv_chol, (X - mu).T, lower=True).T
log_prob[:, c] = - .5 * (np.sum(cv_sol ** 2, axis=1) + \
n_dim * np.log(2 * np.pi) + cv_log_det)
return log_prob
示例5: cov
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import diagonal [as 別名]
def cov(self):
r"""The covariance matrix describing the Gaussian state.
The diagonal elements of the covariance matrix correspond to the
variance in the position and momentum quadratures:
.. math::
\mathbf{V}_{ii} = \begin{cases}
(\Delta x_i)^2, & 0\leq i\leq N-1\\
(\Delta p_{i-N})^2, & N\leq i\leq 2(N-1)
\end{cases}
where :math:`\Delta x_i` and :math:`\Delta p_i` refer to the
position and momentum quadrature variance of mode :math:`i` respectively.
Note that if the covariance matrix is purely diagonal, then this
corresponds to squeezing :math:`z=re^{i\phi}` where :math:`\phi=0`,
and :math:`\Delta x_i = e^{-2r}`, :math:`\Delta p_i = e^{2r}`.
Returns:
array: the :math:`2N\times 2N` covariance matrix.
"""
return self._cov
示例6: test_diagonal
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import diagonal [as 別名]
def test_diagonal(self):
a = np.arange(12).reshape((3, 4))
assert_equal(a.diagonal(), [0, 5, 10])
assert_equal(a.diagonal(0), [0, 5, 10])
assert_equal(a.diagonal(1), [1, 6, 11])
assert_equal(a.diagonal(-1), [4, 9])
b = np.arange(8).reshape((2, 2, 2))
assert_equal(b.diagonal(), [[0, 6], [1, 7]])
assert_equal(b.diagonal(0), [[0, 6], [1, 7]])
assert_equal(b.diagonal(1), [[2], [3]])
assert_equal(b.diagonal(-1), [[4], [5]])
assert_raises(ValueError, b.diagonal, axis1=0, axis2=0)
assert_equal(b.diagonal(0, 1, 2), [[0, 3], [4, 7]])
assert_equal(b.diagonal(0, 0, 1), [[0, 6], [1, 7]])
assert_equal(b.diagonal(offset=1, axis1=0, axis2=2), [[1], [3]])
# Order of axis argument doesn't matter:
assert_equal(b.diagonal(0, 2, 1), [[0, 3], [4, 7]])
示例7: _log_multivariate_normal_density_full
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import diagonal [as 別名]
def _log_multivariate_normal_density_full(X, means, covars, min_covar=1.e-7):
"""Log probability for full covariance matrices.
"""
n_samples, n_dim = X.shape
nmix = len(means)
log_prob = np.empty((n_samples, nmix))
for c, (mu, cv) in enumerate(zip(means, covars)):
try:
cv_chol = linalg.cholesky(cv, lower=True)
except linalg.LinAlgError:
# The model is most probably stuck in a component with too
# few observations, we need to reinitialize this components
cv_chol = linalg.cholesky(cv + min_covar * np.eye(n_dim),
lower=True)
cv_log_det = 2 * np.sum(np.log(np.diagonal(cv_chol)))
cv_sol = linalg.solve_triangular(cv_chol, (X - mu).T, lower=True).T
log_prob[:, c] = - .5 * (np.sum(cv_sol ** 2, axis=1) +
n_dim * np.log(2 * np.pi) + cv_log_det)
return log_prob
示例8: sp_to_adjency
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import diagonal [as 別名]
def sp_to_adjency(C, threshinf=0.2, threshsup=1.8):
""" Thresholds the structure matrix in order to compute an adjency matrix.
All values between threshinf and threshsup are considered representing connected nodes and set to 1. Else are set to 0
Parameters
----------
C : ndarray, shape (n_nodes,n_nodes)
The structure matrix to threshold
threshinf : float
The minimum value of distance from which the new value is set to 1
threshsup : float
The maximum value of distance from which the new value is set to 1
Returns
-------
C : ndarray, shape (n_nodes,n_nodes)
The threshold matrix. Each element is in {0,1}
"""
H = np.zeros_like(C)
np.fill_diagonal(H, np.diagonal(C))
C = C - H
C = np.minimum(np.maximum(C, threshinf), threshsup)
C[C == threshsup] = 0
C[C != 0] = 1
return C
示例9: diagflat
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import diagonal [as 別名]
def diagflat(v, k=0):
"""Returns a 2-d array with flattened `v` as diagonal.
Args:
v: array_like of any rank. Gets flattened when setting as diagonal. Could be
an ndarray, a Tensor or any object that can be converted to a Tensor using
`tf.convert_to_tensor`.
k: Position of the diagonal. Defaults to 0, the main diagonal. Positive
values refer to diagonals shifted right, negative values refer to
diagonals shifted left.
Returns:
2-d ndarray.
"""
v = asarray(v)
return diag(tf.reshape(v.data, [-1]), k)
示例10: get_like_from_mats
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import diagonal [as 別名]
def get_like_from_mats(ky_mat, l_mat, alpha, name):
""" compute the likelihood from the covariance matrix
:param ky_mat: the covariance matrix
:return: float, likelihood
"""
# catch linear algebra errors
labels = _global_training_labels[name]
# calculate likelihood
like = (-0.5 * np.matmul(labels, alpha) -
np.sum(np.log(np.diagonal(l_mat))) -
math.log(2 * np.pi) * ky_mat.shape[1] / 2)
return like
#######################################
##### KY MATRIX FUNCTIONS and gradients
#######################################
示例11: zz
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import diagonal [as 別名]
def zz(matrix, nb):
r"""Zig-zag traversal of the input matrix
:param matrix: input matrix
:param nb: number of coefficients to keep
:return: an array of nb coefficients
"""
flipped = np.fliplr(matrix)
rows, cols = flipped.shape # nb of columns
coefficient_list = []
for loop, i in enumerate(range(cols - 1, -rows, -1)):
anti_diagonal = np.diagonal(flipped, i)
# reversing even diagonals prioritizes the X resolution
# reversing odd diagonals prioritizes the Y resolution
# for square matrices, the information content is the same only when nb covers half of the matrix
# e.g. [ nb = n*(n+1)/2 ]
if loop % 2 == 0:
anti_diagonal = anti_diagonal[::-1] # reverse anti_diagonal
coefficient_list.extend([x for x in anti_diagonal])
# flattened = [val for sublist in coefficient_list for val in sublist]
return coefficient_list[:nb]
示例12: _fit
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import diagonal [as 別名]
def _fit(self, X, model_dump_path=None, verbose=True):
"""
:param X: shape (n_videos, n_frames, n_descriptors_per_image, n_dim_descriptor)
:param model_dump_path: (optional) path where the fitted model shall be dumped
:param verbose - boolean that controls the verbosity
:return: fitted Fisher vector object
"""
assert X.ndim == 4
self.feature_dim = X.shape[-1]
X = X.reshape(-1, X.shape[-1])
# fit GMM and store params of fitted model
self.gmm = gmm = GaussianMixture(n_components=self.n_kernels, covariance_type=self.covariance_type, max_iter=1000).fit(X)
self.covars = gmm.covariances_
self.means = gmm.means_
self.weights = gmm.weights_
# if cov_type is diagonal - make sure that covars holds a diagonal matrix
if self.covariance_type == 'diag':
cov_matrices = np.empty(shape=(self.n_kernels, self.covars.shape[1], self.covars.shape[1]))
for i in range(self.n_kernels):
cov_matrices[i, :, :] = np.diag(self.covars[i, :])
self.covars = cov_matrices
assert self.covars.ndim == 3
self.fitted = True
if verbose:
print('fitted GMM with %i kernels'%self.n_kernels)
if model_dump_path:
with open(model_dump_path, 'wb') as f:
pickle.dump(self,f, protocol=4)
if verbose:
print('Dumped fitted model to', model_dump_path)
return self
示例13: init_amps
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import diagonal [as 別名]
def init_amps(self, eris):
time0 = time.clock(), time.time()
mo_e = eris.fock.diagonal()
nocc = self.nocc
eia = mo_e[:nocc,None] - mo_e[None,nocc:]
eijab = lib.direct_sum('ia,jb->ijab',eia,eia)
t1 = eris.fock[:nocc,nocc:] / eia
eris_oovv = np.array(eris.oovv)
t2 = eris_oovv/eijab
self.emp2 = 0.25*einsum('ijab,ijab',t2,eris_oovv.conj()).real
logger.info(self, 'Init t2, MP2 energy = %.15g', self.emp2)
logger.timer(self, 'init mp2', *time0)
return self.emp2, t1, t2
示例14: make_cholesky_unique
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import diagonal [as 別名]
def make_cholesky_unique(chol):
"""Make a lower triangular cholesky factor unique.
Cholesky factors are only unique with the additional requirement that all diagonal
elements are positive. This is done automatically by np.linalg.cholesky.
Since we calucate cholesky factors by QR decompositions we have to do it manually.
It is obvious from that this is admissible because:
chol sign_swither sign_switcher.T chol.T = chol chol.T
"""
sign_switcher = np.sign(np.diag(np.diagonal(chol)))
return chol @ sign_switcher
示例15: test_diagonal
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import diagonal [as 別名]
def test_diagonal():
b1 = np.matrix([[1,2],[3,4]])
diag_b1 = np.matrix([[1, 4]])
array_b1 = np.array([1, 4])
assert_equal(b1.diagonal(), diag_b1)
assert_equal(np.diagonal(b1), array_b1)
assert_equal(np.diag(b1), array_b1)