【发布时间】:2021-12-06 00:38:12
【问题描述】:
我正在使用 python 和 numpy 手动解决一些电力系统问题,我遇到的一个问题是交换列和行。但是每次我执行代码时,它在不同的位置都有不同的值。
这是我的代码:
Y =
0.00-10.00j -0.00+10.00j 0.00+0.00j 0.00+0.00j 0.00+0.00j 0.00+0.00j
-0.00+10.00j 24.63-71.51j -8.21+20.52j -16.42+41.04j 0.00+0.00j 0.00+0.00j
0.00+0.00j -8.21+20.52j 24.63-69.51j 0.00+0.00j -0.00+8.00j 0.00+0.00j
0.00+0.00j -16.42+41.04j 0.00+0.00j 24.63-61.51j -8.21+20.52j 0.00+0.00j
0.00+0.00j 0.00+0.00j -0.00+8.00j -8.21+20.52j 24.63-61.51j 0.00+0.00j
0.00+0.00j 0.00+0.00j 0.00+0.00j 0.00+0.00j 0.00+0.00j 0.00-8.00j
Ya = np.copy(Y) # Y is the 2D array above
print('\n'.join([''.join(['{:20.2f}'.format(item) for item in row])
for row in Ya]))
print('\n')
Ya[[1, 3]] = Ya[[3, 1]]
Ya[[2, 4]] = Ya[[4, 2]]
Ya[[3, 4]] = Ya[[4, 3]]
Ya[[3, 5]] = Ya[[5, 3]]
Ya[: ,[1, 3]] = Ya[:, [3, 1]]
Ya[:, [2, 4]] = Ya[:, [4, 2]]
Ya[:, [3, 4]] = Ya[:, [4, 3]]
Ya[:, [3, 5]] = Ya[:, [5, 3]]
print('\n'.join([''.join(['{:20.2f}'.format(item) for item in row])
for row in np.array(Ya)]))
print('\n')
# Reduced Matrix
temp1 = np.copy(Ya[0:4, 0:4])
temp2 = np.copy(Ya[0:4, 4:])
temp3 = np.copy(Ya[4:, 0:4])
temp4 = np.copy(Ya[4:, 4:])
Y_r = temp1 - (temp2 * (np.matrix(temp4).getI()) * temp3)
print('\n'.join([''.join(['{:20.2f}'.format(item) for item in row])
for row in np.array(Y_r)]))
如您所见,我多次打印 Ya 只是为了检查一切是否正常。但即使在第一次 Ya 打印中,每次运行代码时它都会更改值。
我不知道它是否与此有关,但我正在 Google Colab 上运行它。上面代码中的第一行与我创建 Y 的其余代码位于不同的单元格中。
【问题讨论】:
-
在第一行打印
Y,然后再执行其他操作。没有看到任何其他代码,就不可能重现您的问题。 -
@MadPhysicist 完成
-
你能显示可疑的输出吗?
-
我看到打印语句,但没有结果。我从这里看不到你的屏幕!
-
请提供足够的代码,以便其他人更好地理解或重现问题。
标签: python arrays numpy google-colaboratory