1

非常に簡単な質問ですが、これらのキーワードでは答えが見つかりません。次のことを行うより良い方法は何ですか?

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

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

私が @t1 を使用している操作は、非常に非 Pythonic で非効率的だと思います。ポインタはありますか?

4

1 に答える 1

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)

そして、これを使用して と の両方をフィルタリングできtますy

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

len関連する単調性の使用または仮定はありません。

于 2012-07-30T23:24:39.863 に答える