Numpy Arrays:根据阈值切割y值数组,然后相应地切片x值数组

时间:2012-07-30 23:05:55

标签: python numpy

非常快速的问题,找不到这些关键字的答案。做以下事情的更好方法是什么?

t = linspace(0,1000,300)    
x0 = generic_function(t)

x1 = x0[x0>0.8]
t1 = t[t>t[len(x0)-len(x1)-1]]

我正在使用@ t1的操作让我觉得非常低级和低效。有什么指针吗?

1 个答案:

答案 0 :(得分:2)

IIUC,您可以简单地重复使用切割数组。例如:

>>> from numpy import arange, sin
>>> t = arange(5)
>>> t
array([0, 1, 2, 3, 4])
>>> y = sin(t)
>>> y
array([ 0.        ,  0.84147098,  0.90929743,  0.14112001, -0.7568025 ])

正如您已经完成的那样,您可以创建一个bool数组:

>>> y > 0.8
array([False,  True,  True, False, False], dtype=bool)

然后您可以使用它来过滤ty

>>> t[y > 0.8]
array([1, 2])
>>> y[y > 0.8]
array([ 0.84147098,  0.90929743])

不使用len或关于单调性的假设。