这里发生了一些奇怪的事情(至少对我来说很奇怪)。我正试图弹出“南茜”。一个列表中的值和另一个列表中的相应值。我被告知您无法从列举的列表中弹出,因此我制作了一个临时列表。
MATCH
有些事情正在发生,我不明白:
1)它似乎是从atemp和a弹出nans,尽管我只告诉它a.pop(i)而不是atemp.pop(i)。是否有某种功能超载或等同于ate和atemp的东西,我不明白?如何将它们完全分开(即仅从a而不是atemp?
弹出2)它并没有弹出所有的nan并且for循环必须重复多次才能弹出所有的nan
答案 0 :(得分:2)
有许多更简单的方法,但如果您想使用自己的代码,则需要复制 a
,而不仅仅是创建引用并使用不同的逻辑要从列表中删除元素,在反向范围内循环len a -1将为您提供所需的输出:
import numpy as np
a = []
b = []
for i in range(0, 100): # alternating list of ints and nan
if i % 2 == 0:
a.append(i)
else:
a.append(np.nan) #the only way I know how to make nan
b.append(i * 100)
atemp = a[:]
print(len(a), len(atemp))
for i in range(len(a)-1,-1,-1):
if np.isnan(a[i]):
a.pop(i)
b.pop(i)
print(len(a), len(atemp))
答案 1 :(得分:1)
这个怎么样?
contentPane
答案 2 :(得分:1)
这样做了:
a, b = zip(*[(x,y) for x,y in zip(a, b) if np.isfinite(y)])
谢谢大家。对不起反叛的答案被否决了,因为它帮助了我很多。