本文整理匯總了Python中numpy.ix_方法的典型用法代碼示例。如果您正苦於以下問題:Python numpy.ix_方法的具體用法?Python numpy.ix_怎麽用?Python numpy.ix_使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類numpy
的用法示例。
在下文中一共展示了numpy.ix_方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: padded_mo_energy
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import ix_ [as 別名]
def padded_mo_energy(mp, mo_energy):
"""
Pads energies of active MOs.
Args:
mp (:class:`MP2`): An instantiation of an SCF or post-Hartree-Fock object.
mo_energy (ndarray): original non-padded molecular energies;
Returns:
Padded molecular energies.
"""
frozen_mask = get_frozen_mask(mp)
padding_convention = padding_k_idx(mp, kind="joint")
nkpts = mp.nkpts
result = np.zeros((nkpts, mp.nmo), dtype=mo_energy[0].dtype)
for k in range(nkpts):
result[np.ix_([k], padding_convention[k])] = mo_energy[k][frozen_mask[k]]
return result
示例2: padded_mo_coeff
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import ix_ [as 別名]
def padded_mo_coeff(mp, mo_coeff):
"""
Pads coefficients of active MOs.
Args:
mp (:class:`MP2`): An instantiation of an SCF or post-Hartree-Fock object.
mo_coeff (ndarray): original non-padded molecular coefficients;
Returns:
Padded molecular coefficients.
"""
frozen_mask = get_frozen_mask(mp)
padding_convention = padding_k_idx(mp, kind="joint")
nkpts = mp.nkpts
result = np.zeros((nkpts, mo_coeff[0].shape[0], mp.nmo), dtype=mo_coeff[0].dtype)
for k in range(nkpts):
result[np.ix_([k], np.arange(result.shape[1]), padding_convention[k])] = mo_coeff[k][:, frozen_mask[k]]
return result
示例3: padded_mo_energy
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import ix_ [as 別名]
def padded_mo_energy(mp, mo_energy):
"""
Pads energies of active MOs.
Args:
mp (:class:`MP2`): An instantiation of an SCF or post-Hartree-Fock object.
mo_energy (ndarray): original non-padded molecular energies;
Returns:
Padded molecular energies.
"""
frozen_mask = get_frozen_mask(mp)
padding_convention = padding_k_idx(mp, kind="joint")
nkpts = mp.nkpts
result = (np.zeros((nkpts, mp.nmo), dtype=mo_energy[0][0].dtype),
np.zeros((nkpts, mp.nmo), dtype=mo_energy[0][0].dtype))
for spin in [0, 1]:
for k in range(nkpts):
result[spin][np.ix_([k], padding_convention[k])] = mo_energy[spin][k][frozen_mask[k]]
return result
示例4: padded_mo_coeff
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import ix_ [as 別名]
def padded_mo_coeff(mp, mo_coeff):
"""
Pads coefficients of active MOs.
Args:
mp (:class:`MP2`): An instantiation of an SCF or post-Hartree-Fock object.
mo_coeff (ndarray): original non-padded molecular coefficients;
Returns:
Padded molecular coefficients.
"""
frozen_mask = get_frozen_mask(mp)
padding_convention = padding_k_idx(mp, kind="joint")
nkpts = mp.nkpts
result = (np.zeros((nkpts, mo_coeff[0][0].shape[0], mp.nmo[0]), dtype=mo_coeff[0][0].dtype),
np.zeros((nkpts, mo_coeff[1][0].shape[0], mp.nmo[1]), dtype=mo_coeff[0][0].dtype))
for spin in [0, 1]:
for k in range(nkpts):
result[spin][np.ix_([k], np.arange(result[spin].shape[1]), padding_convention[spin][k])] = \
mo_coeff[spin][k][:, frozen_mask[spin][k]]
return result
示例5: mask_frozen_ip
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import ix_ [as 別名]
def mask_frozen_ip(eom, vector, kshift, const=LARGE_DENOM):
'''Replaces all frozen orbital indices of `vector` with the value `const`.'''
r1, r2 = eom.vector_to_amplitudes(vector, kshift=kshift)
nkpts = eom.nkpts
nocc, nmo = eom.nocc, eom.nmo
kconserv = eom.kconserv
# Get location of padded elements in occupied and virtual space
nonzero_opadding, nonzero_vpadding = eom.nonzero_opadding, eom.nonzero_vpadding
new_r1 = const * np.ones_like(r1)
new_r2 = const * np.ones_like(r2)
new_r1[nonzero_opadding[kshift]] = r1[nonzero_opadding[kshift]]
for ki in range(nkpts):
for kj in range(nkpts):
kb = kconserv[ki, kshift, kj]
idx = np.ix_([ki], [kj], nonzero_opadding[ki], nonzero_opadding[kj], nonzero_vpadding[kb])
new_r2[idx] = r2[idx]
return eom.amplitudes_to_vector(new_r1, new_r2, kshift, kconserv)
示例6: mask_frozen_ea
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import ix_ [as 別名]
def mask_frozen_ea(eom, vector, kshift, const=LARGE_DENOM):
'''Replaces all frozen orbital indices of `vector` with the value `const`.'''
r1, r2 = eom.vector_to_amplitudes(vector, kshift=kshift)
kconserv = eom.kconserv
nkpts = eom.nkpts
nocc, nmo = eom.nocc, eom.nmo
# Get location of padded elements in occupied and virtual space
nonzero_opadding, nonzero_vpadding = eom.nonzero_opadding, eom.nonzero_vpadding
new_r1 = const * np.ones_like(r1)
new_r2 = const * np.ones_like(r2)
new_r1[nonzero_vpadding[kshift]] = r1[nonzero_vpadding[kshift]]
for kj in range(nkpts):
for ka in range(nkpts):
kb = kconserv[kshift, ka, kj]
idx = np.ix_([kj], [ka], nonzero_opadding[kj], nonzero_vpadding[ka], nonzero_vpadding[kb])
new_r2[idx] = r2[idx]
return eom.amplitudes_to_vector(new_r1, new_r2, kshift, kconserv)
示例7: test_eri
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import ix_ [as 別名]
def test_eri(self):
"""Tests all ERI implementations: with and without symmetries."""
for eri in (ktd.PhysERI, ktd.PhysERI4, ktd.PhysERI8):
if not eri == ktd.PhysERI8 or self.test8:
try:
e = eri(self.model_krhf)
m = e.tdhf_full_form()
# Test matrix vs ref
testing.assert_allclose(m, retrieve_m_hf(e), atol=1e-11)
# Test matrix vs pyscf
testing.assert_allclose(self.ref_m, m[numpy.ix_(self.ov_order, self.ov_order)], atol=1e-5)
except Exception:
print("When testing {} the following exception occurred:".format(eri))
raise
示例8: test_eri
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import ix_ [as 別名]
def test_eri(self):
"""Tests all ERI implementations: with and without symmetries."""
e = PhysERI(self.model_rks, "dft")
mk, _ = e.tdhf_mk_form()
testing.assert_allclose(self.ref_m, mk, atol=1e-13)
# Test frozen
for frozen in (1, [0, -1]):
try:
e = PhysERI(self.model_rks, "dft", frozen=frozen)
mk, _ = e.tdhf_mk_form()
ov_mask = tdhf_frozen_mask(e, kind="1ov")
ref_m = self.ref_m[numpy.ix_(ov_mask, ov_mask)]
testing.assert_allclose(ref_m, mk, atol=1e-13)
except Exception:
print("When testing with frozen={} the following exception occurred:".format(repr(frozen)))
raise
示例9: remove_empty_rows_columns
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import ix_ [as 別名]
def remove_empty_rows_columns(np_matrix):
"""Simple util to remove empty rows and columns of a matrix.
Args:
np_matrix: A numpy array.
Returns:
A tuple consisting of:
mat: A numpy matrix obtained by removing empty rows and columns from
np_matrix.
nz_row_ids: A numpy array of the ids of non-empty rows, such that
nz_row_ids[i] is the old row index corresponding to new index i.
nz_col_ids: A numpy array of the ids of non-empty columns, such that
nz_col_ids[j] is the old column index corresponding to new index j.
"""
nz_row_ids = np.where(np.sum(np_matrix, axis=1) != 0)[0]
nz_col_ids = np.where(np.sum(np_matrix, axis=0) != 0)[0]
mat = np_matrix[np.ix_(nz_row_ids, nz_col_ids)]
return mat, nz_row_ids, nz_col_ids
示例10: test_large_fancy_indexing
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import ix_ [as 別名]
def test_large_fancy_indexing(self, level=rlevel):
# Large enough to fail on 64-bit.
nbits = np.dtype(np.intp).itemsize * 8
thesize = int((2**nbits)**(1.0/5.0)+1)
def dp():
n = 3
a = np.ones((n,)*5)
i = np.random.randint(0, n, size=thesize)
a[np.ix_(i, i, i, i, i)] = 0
def dp2():
n = 3
a = np.ones((n,)*5)
i = np.random.randint(0, n, size=thesize)
a[np.ix_(i, i, i, i, i)]
self.assertRaises(ValueError, dp)
self.assertRaises(ValueError, dp2)
示例11: subinv
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import ix_ [as 別名]
def subinv(x,eps=None):
""" Given an matrix (x), calculate all the inverses of leave-one-out sub-matrices.
:param x: a square matrix for which to find the inverses of all it's leave one out sub-matrices.
:param eps: If not None, used to assert that the each calculated
sub-matrix-inverse is within eps of the brute force calculation.
Testing only, this slows the process way down since the inverse of
each sub-matrix is calculated by the brute force method. Typically
set to a multiple of `np.finfo(float).eps`
"""
# handy constant for indexing
xi = x.I
N = x.shape[0]
rng = np.arange(N)
out = [None,] * N
for k in range(N):
k_rng = rng[rng != k]
out[k] = xi[np.ix_(k_rng,k_rng)] - xi[k_rng,k].dot(xi[k,k_rng])/xi[k,k]
if eps is not None:
if not (abs(out[k] - x[np.ix_(k_rng,k_rng)].I) < eps).all():
raise RuntimeError("Fast and brute force methods were not within epsilon (%s) for sub-matrix k = %s; max difference = %s" %
(eps, k, abs(out[k] - x[np.ix_(k_rng,k_rng)].I).max(), ) )
return out
示例12: align_hessian
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import ix_ [as 別名]
def align_hessian(self, hess) -> Array:
blocked_hess = blockwise_expand(hess, (3, 3), False)
alhess = np.zeros_like(blocked_hess)
nat = blocked_hess.shape[0]
for iat in range(nat):
for jat in range(nat):
alhess[iat, jat] = (self.rotation.T).dot(blocked_hess[iat, jat].dot(self.rotation))
alhess = alhess[np.ix_(self.atommap, self.atommap)]
alhess = blockwise_contract(alhess)
return alhess
示例13: test_imds
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import ix_ [as 別名]
def test_imds(self):
testing.assert_allclose(
tuple(self.gw.imds.get_rhs(i) for i in self.gw.imds.entire_space[0]),
tuple(self.kgw.imds.get_rhs(i) for i in zip(self.order_k, self.order_p)),
atol=1e-8
)
testing.assert_allclose(
self.gw.imds.tdm,
self.kgw.imds.tdm[numpy.ix_(range(len(self.kgw.imds.td_e)), range(2), self.order, self.order)],
atol=1e-7
)
示例14: _get_epq
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import ix_ [as 別名]
def _get_epq(pindices,qindices,fac=[1.0,1.0],large_num=LARGE_DENOM):
'''Create a denominator
fac[0]*e[kp,p0:p1] + fac[1]*e[kq,q0:q1]
where padded elements have been replaced by a large number.
Args:
pindices (5-list of object):
A list of p0, p1, kp, orbital values, and non-zero indicess for the first
denominator indices.
qindices (5-list of object):
A list of q0, q1, kq, orbital values, and non-zero indicess for the second
denominator element.
fac (3-list of float):
Factors to multiply the first and second denominator elements.
large_num (float):
Number to replace the padded elements.
'''
def get_idx(x0,x1,kx,n0_p):
return np.logical_and(n0_p[kx] >= x0, n0_p[kx] < x1)
assert(all([len(x) == 5 for x in [pindices,qindices]]))
p0,p1,kp,mo_e_p,nonzero_p = pindices
q0,q1,kq,mo_e_q,nonzero_q = qindices
fac_p, fac_q = fac
epq = large_num * np.ones((p1-p0,q1-q0), dtype=mo_e_p[0].dtype)
idxp = get_idx(p0,p1,kp,nonzero_p)
idxq = get_idx(q0,q1,kq,nonzero_q)
n0_ovp_pq = np.ix_(nonzero_p[kp][idxp], nonzero_q[kq][idxq])
epq[n0_ovp_pq] = lib.direct_sum('p,q->pq', fac_p*mo_e_p[kp][p0:p1],
fac_q*mo_e_q[kq][q0:q1])[n0_ovp_pq]
return epq
# TODO: pull these 3 methods to pyscf.util and make tests
示例15: init_amps
# 需要導入模塊: import numpy [as 別名]
# 或者: from numpy import ix_ [as 別名]
def init_amps(self, eris):
time0 = time.clock(), time.time()
nocc = self.nocc
nvir = self.nmo - nocc
nkpts = self.nkpts
mo_e_o = [eris.mo_energy[k][:nocc] for k in range(nkpts)]
mo_e_v = [eris.mo_energy[k][nocc:] for k in range(nkpts)]
t1 = numpy.zeros((nkpts, nocc, nvir), dtype=numpy.complex128)
t2 = numpy.zeros((nkpts, nkpts, nkpts, nocc, nocc, nvir, nvir), dtype=numpy.complex128)
self.emp2 = 0
eris_oovv = eris.oovv.copy()
# Get location of padded elements in occupied and virtual space
nonzero_opadding, nonzero_vpadding = padding_k_idx(self, kind="split")
kconserv = kpts_helper.get_kconserv(self._scf.cell, self.kpts)
for ki, kj, ka in kpts_helper.loop_kkk(nkpts):
kb = kconserv[ki, ka, kj]
# For LARGE_DENOM, see t1new update above
eia = LARGE_DENOM * numpy.ones((nocc, nvir), dtype=eris.mo_energy[0].dtype)
n0_ovp_ia = numpy.ix_(nonzero_opadding[ki], nonzero_vpadding[ka])
eia[n0_ovp_ia] = (mo_e_o[ki][:,None] - mo_e_v[ka])[n0_ovp_ia]
ejb = LARGE_DENOM * numpy.ones((nocc, nvir), dtype=eris.mo_energy[0].dtype)
n0_ovp_jb = numpy.ix_(nonzero_opadding[kj], nonzero_vpadding[kb])
ejb[n0_ovp_jb] = (mo_e_o[kj][:,None] - mo_e_v[kb])[n0_ovp_jb]
eijab = eia[:, None, :, None] + ejb[:, None, :]
t2[ki, kj, ka] = eris_oovv[ki, kj, ka] / eijab
t2 = numpy.conj(t2)
self.emp2 = 0.25 * numpy.einsum('pqrijab,pqrijab', t2, eris_oovv).real
self.emp2 /= nkpts
logger.info(self, 'Init t2, MP2 energy = %.15g', self.emp2.real)
logger.timer(self, 'init mp2', *time0)
return self.emp2, t1, t2