我有一个包含两列的文本文件。让我们打电话给他们r and 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数组对象,所以让我们利用它。]
除了使用列表推导,您还可以创建一个布尔数组并将其用于索引。您应该阅读本教程中有关“高级索引编制”的部分。例如:
>>> 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)
此数组在哪里有True,xi > 0
在哪里没有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])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句