执行numpy计算时,我在数组中得到np.nan
个值。 val.isna().values.any()
没有给出np.nan
但计算后数组保留np.nan
。
示例:
delta_h = np.abs(start_height - end_height)
J_e = np.array([d / l if not np.isnan(d / l) else 0.002 for
d, l in zip(delta_h, length)])
J_e = np.abs(J_e)
DN = np.abs(DN)
print("DN {}".format(DN.isna().values.any()))
print("J_E {}".format(np.isnan(J_e).any()))
print("J_E {}".format(J_e.isna().values.any()))
C = (np.pi * np.power(DN, 2)) / 4
log = ((2.51 * v) / (DN * np.sqrt(2 * g * DN * J_e))) + (k / (3.71 * DN))
rot = 2 * g * DN * J_e
print("log {}".format(np.isnan(log).any()))
print("rot {}".format(np.isnan(rot).any()))
log10 = np.log10(log)
sqrt = np.sqrt(rot)
print("log10 {}".format(np.isnan(log10).any()))
print("sqrt {}".format(np.isnan(sqrt).any()))
t = -2 * log10
print("-2 * log10 {}".format(np.isnan(t).any()))
tt = -2 * sqrt
print("-2 * sqrt {}".format(np.isnan(tt).any()))
ttt = log10 * sqrt
print("ttt {}".format(np.isnan(ttt).any()))
# for i, x in enumerate(ttt):
# if np.isnan(x):
# print(sqrt[i], log10[i])
N = -2 * np.multiply(log10, sqrt)
print(N[N==np.nan])
print("C {}".format(C.isna().values.any()))
print("N {}".format(N.isna().values.any()))
V = C * N
print("V {}".format(np.isnan(V).any()))
给出: DN错误 J_E错 记录错误 腐烂 log10错误 sqrt错误 -2 * log10错误 -2 * sqrt假 ttt真的 系列([],名称:DN,dtype:float64) C错 N真 V True
为什么-2 * np.multiply(log10, sqrt)
在结果数组中突然出现np.nans
?
此外,-2 * log10 * sqrt
会在数组中生成np.nan
。
数据来自geopandas.DataFrame()
答案 0 :(得分:0)
有零除,编译器没有提到。 奇怪的是,两者之间的步骤没有表现出失败。