我有一个包含两列的文本文件。我们称它们为 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])
