Skip to main content
 首页 » 编程设计

python之将条件应用于 python 列表

2025年05月04日10me-sa

我有一个包含两列的文本文件。我们称它们为 r 和 xi,我使用 r,xi = numpy.loadtext

加载它们
 r         xi 
2.5      2.510891 
7.5     -0.436541 
12.5     0.576983 
17.5     0.377067 
22.5     0.19648 
27.5    -0.003876 
32.5     0.117554 
37.5     0.136895 
42.5     0.261832 
47.5    -0.08984 

我知道如何删除 xi 中的所有负值。我使用 xi = [i for i in xi if i>0] 这给了我所有的正值。

我现在如何删除相应的 r 值?

这里在上面的例子中,第二行的 r 和 xi 应该被删除为 xi = -0.4 等等。

请您参考如下方法:

[注意:即使问题是指 python“列表”,因为用于读取对象的命令是 numpy.loadtxt,我们实际上有 numpy 数组对象,所以让我们利用那个。]

您可以创建一个 bool 数组并使用它来索引,而不是使用列表理解。您应该阅读关于 "advanced indexing" 的教程部分.例如:

>>> r, xi = np.loadtxt("s.dat", skiprows=1, unpack=True) 
>>> keep = xi > 0 
>>> keep 
array([ True, False,  True,  True,  True, False,  True,  True,  True, False], dtype=bool) 

这个数组在 xi > 0 的地方有 True,在没有的地方有 False。我们现在可以使用 keep 来选择我们想要的:

>>> r[keep] 
array([  2.5,  12.5,  17.5,  22.5,  32.5,  37.5,  42.5]) 
>>> xi[keep] 
array([ 2.510891,  0.576983,  0.377067,  0.19648 ,  0.117554,  0.136895, 
        0.261832])