作用于数组的Python 3循环会给出错误消息,除非“无意义”#39;添加了打印声明

时间:2017-09-29 20:42:42

标签: python arrays numpy

基本上我运行for循环并得到一条错误消息并且它没有运行,如果我在其中运行相同的for循环,其中的代码似乎正常工作。

这是我的代码,在这段代码中,我主要在一个阵列 magnitude_differences 的形状(68,4461,2)上进行操作,以创建新的阵列更正。数组 reference_star_magnitudes 的形状(4461,68,2)我只是用它来稍微证明代码。

corrections = [] 
for i,_ in enumerate(reference_star_magnitudes):
    corrections.append( np.mean([ float(row[i].T[0]) 
                        for row in magnitude_differences 
                        if float(row[i].T[0]) < 2. ]) ) 
corrections = np.array(corrections)

给出错误消息:

~/anaconda3/lib/python3.5/site-packages/numpy/core/_methods.py:59: 
 warnings.warn("Mean of empty slice.", RuntimeWarning)
RuntimeWarning: Mean of empty slice.
~/anaconda3/lib/python3.5/site-packages/numpy/core/_methods.py:70: 
 ret = ret.dtype.type(ret / rcount)
RuntimeWarning: invalid value encountered in double_scalars

带有print语句的代码似乎运行得很好。

corrections = [] 
for i,_ in enumerate(reference_star_magnitudes):
    print('nothing') 
    corrections.append( np.mean([ float(row[i].T[0]) 
                        for row in magnitude_differences 
                        if float(row[i].T[0]) < 2. ]) ) 
corrections = np.array(corrections)

1 个答案:

答案 0 :(得分:0)

print语句停止运行错误消息。我认为没有print语句代码没有运行,但确实如此。为深夜愚蠢的问题道歉,但你帮我回答了!