这里发生了一些奇怪的事情(至少对我来说是奇怪的)。我正在尝试从一个列表中弹出'nan'值,并从另一个列表中弹出相应的值。我被告知您不能从正在枚举的列表中弹出,所以我做了一个临时列表。你知道吗
import numpy as np
a=[]
b=[]
for i in range(0,100): #alternating list of ints and nan
if i/2. == i/2:
a.append(i)
else:
a.append(np.mean([])) #the only way I know how to make nan
b.append(i*100)
atemp=a
print(len(a),len(atemp))
for i,v in enumerate(atemp):
if np.isnan(v):
a.pop(i)
b.pop(i)
print(len(a),len(atemp))
有几件事我不明白:
1)似乎是从atemp和a中弹出NaN,尽管我只是告诉它a.pop(I)而不是流行音乐(i) 是的。有没有什么函数重载或者等同于a和atemp的东西我看不到?我如何使它们完全独立的列表(即只从a弹出而不是atemp)?你知道吗
2)没有弹出所有的nan,必须重复for循环多次才能弹出所有的nan
有更简单的方法,但是如果您想使用自己的代码,您需要复制
a
而不仅仅是创建一个引用并使用不同的逻辑从列表中删除元素,反过来在len a-1范围内循环将得到您想要的输出:它做到了:
谢谢大家。抱歉,丽贝林的回答被否决了,因为它对我有很大帮助。你知道吗
这个怎么样
相关问题 更多 >
编程相关推荐