簡體   English   中英

python:如何根據1列表中的內容從2個列表中刪除值

[英]python: How to remove values from 2 lists based on what's in 1 list

我有2個數字列表,一個叫做xVar ,另一個叫做yVar 我將使用這兩個元素在圖形上繪制X和Y值。 它們都具有相同數量的元素。

通常,我只是情節

ax.scatter(xVar,yVar,s=2,color='tomato');

我想從yVar中刪除超過某個值的數據,例如yVar值超過100所有數據,但我還想刪除關聯的xVar值。 有人可以建議一種方法來創建2個新變量,刪除yVar超過100xVar值以及與它們相關的xVar值嗎? 然后我可以在我的繪圖線xVaryVar替換為新變量。

再次感謝All,

每當你想對兩個(或更多)列表的相應值做某事時,那就是zip的用途。 它為您提供了一個列表,列出了每個索引的相應值。

所以,在這種情況下, zip兩個列表一起,然后過濾壓縮的列表,然后(與他們解壓zip再次,如文檔說明):

xVar, yVar = zip(*((x, y) for x, y in zip(xVar, yVar) if y <= 100))

如果這令人困惑,讓我一步一步地說明:

>>> xVar = [1, 200, 300, 10]
>>> yVar = [150, 100, 50, 200]
>>> xyVar = zip(xVar, yVar)
>>> xyVar
[(1, 150), (200, 100), (300, 50), (10, 500)]
>>> xyFiltered = [(x, y) for x, y in xyVar if y <= 100]
>>> xyFiltered
[(200, 100), (300, 50)]
>>> xVar, yVar = zip(*xyFiltered)
[(200, 300), (100, 50)]

在不編寫代碼的情況下,找到要刪除的y的索引,保存索引,刪除y值,然后刪除相同索引號的x值。

查找與您要保留的數據相對應的索引:

ind = [i for i in range(len(yVar)) if yVar[i] < 100]

並只使用這些點:

yVar = [yVar[i] for i in ind]
xVar = [xVar[i] for i in ind]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM