我有一个名为BNodeVal
的3D numpy数组。目前它的大小是(1,1,16)
,但它可能比这大。我正在尝试使用此3D数组和3个坐标if
评估coord_x , coord_y, coord_z
条件。
BNodeVal = [[[ 0. 1. 15. 0. 0. 13.4 1.77 15.9
1.77 37.391 1.03 40.931 39.161 0.5402 0. 0. ]]]
以下是无法正常工作的代码部分:
for j in range(int(np.amax(BNodeval[i, :, 1]))):
print("x = ", coord_x, "\ny =", coord_y, "\nz =", coord_z)
print("3 = ", BNodeval[i][j][2], "\n4 =", BNodeval[i][j][3], "\n5 =", BNodeval[i][j][4])
print(np.isclose(coord_x, BNodeval[i][j][2]))
print(np.isclose(coord_y, BNodeval[i][j][3]))
print(np.isclose(coord_z, BNodeval[i][j][4]))
if np.isclose(coord_x, BNodeval[i][j][2]) and \
np.isclose(coord_y, BNodeval[i][j][3]) and \
np.isclose(coord_x, BNodeval[i][j][4]) : # 1 - 1
print("# 1 - 1")
else:
print('# 1 - 2")
这就是它的印刷品:
x = 15.0
y = 0.0
z = 0.0
3 = 15.0
4 = 0.0
5 = 0.0
True
True
True
# 1 - 2
但是,如果我只使用其中一个np.isclose
条款,它就可以正常工作并打印# 1 - 2
。任何建议表示赞赏。
答案 0 :(得分:1)
最后一次测试是错误的。你正在打印:
print(np.isclose(coord_z, BNodeval[i][j][4]))
但测试:
np.isclose(coord_x, BNodeval[i][j][4])
^ should be z