在结果中没有纳米值的numpy nan

时间:2018-05-31 15:21:16

标签: python arrays numpy

执行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()

1 个答案:

答案 0 :(得分:0)

有零除,编译器没有提到。 奇怪的是,两者之间的步骤没有表现出失败。