gpt4 book ai didi

python - numpy 用数组填充数组

转载 作者:太空宇宙 更新时间:2023-11-03 18:07:38 25 4
gpt4 key购买 nike

我想在克罗内克积下组合未指定(有限)数量的矩阵。为了做到这一点,我想将矩阵保存在数组中,但我不知道该怎么做。目前我有:

for i in range(LNew-2):
for j in range(LNew-2):
Bulk = np.empty(shape=(LNew-1,LNew-1))
if i == j:
Bulk[i,j]=H2
else:
Bulk[i,j]=idm

这里 H2 和 idm 都是矩阵,我想将它们合并到克罗内克积下。但由于 Bulk 是一个 ndarray 对象,我想它不会接受其中的类似数组的对象。

编辑:

这就是我想使用这个想法的函数。我用它来构建量子自旋链的哈密顿矩阵。所以 H2 是两个粒子链的哈密顿量,H2 是 4x4 矩阵,idm 是 2x2 单位矩阵。

现在三个粒子链是np.kron(H2,idm)+np.kron(idm,H2)

对于四个粒子np.kron(np.kron(H2,idm),idm)+np.kron(idm,np.kron(H2,idm))+np.kron(idm,np.kron(idm,H2)) 等等。

def ExpandHN(LNew):
idm = np.identity(2)
H2 = GetH(2,'N')
HNew = H2
for i in range(LNew-2):
for j in range(LNew-2):
Bulk = np.empty(shape=(LNew-1,LNew-1))
if i == j:
Bulk[i,j]=H2
else:
Bulk[i,j]=idm
i = 0
for i in range(LNew-2):
for j in range(LNew-3):
HNew += np.kron(Bulk[i,j],Bulk[i,j+1]) #something like this

return HNew

如您所见,第二组 for 循环尚未完成。

话虽这么说,如果有人有一个完全不同但可行的解决方案,我也会很高兴。

最佳答案

如果我理解正确,您的问题可以归结为如何使用 numpy 创建数组的数组。我建议使用标准 python 对象 dict:

Bulk = dict()
for i in range(LNew-2):
for j in range(LNew-2):
if i == j:
Bulk[(i,j)]=H2
else:
Bulk[(i,j)]=idm

使用元组作为键允许您维护矩阵的类似数组的索引。另请注意,您应该在两个 for 循环之外定义 Bulk(无论如何)。

HTH

关于python - numpy 用数组填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26547121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com