非常快速的问题,无法使用这些关键字找到答案。执行以下操作的更好方法是什么?
t = linspace(0,1000,300)
x0 = generic_function(t)
x1 = x0[x0>0.8]
t1 = t[t>t[len(x0)-len(x1)-1]]
我正在使用@t1 的操作让我觉得非常非 Python 且效率低下。任何指针?
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)
然后你可以用它来过滤t
和y
:
>>> t[y > 0.8]
array([1, 2])
>>> y[y > 0.8]
array([ 0.84147098, 0.90929743])
不使用len
或假设涉及单调性。