配列があり、その配列内の要素がその配列内の他の要素以上であるかどうかを確認したいと思います。forループを2つ実行することもできますが、配列の長さが10,000以上であるため、非常に遅いプログラムが作成されました。とにかく私はこれをより速くすることができますか?
[編集]私はそれが私が見ている要素の後に来る要素以上であるかどうかを確認するためにそれを必要とするだけです、そしてもしそうなら、私はそれがインデックスであるかを知る必要があります。
[編集]現在の解決策は私が必要としているものに対して機能していないので、私は私の問題をより明確に再説明するつもりです。まず、ここにいくつかのコードがあります
x=linspace(-10, 10, 10000)
t=linspace(0,5,10000)
u=np.exp(-x**2)
k=u*t+x
そこで、x配列を取得し、それをガウス分布に入れてその高さを取得します。次に、その高さに基づいて、そのx値が空間を伝播する速度を取得します。これはkで求められます。私の問題は、ガウス関数がいつ二重値関数になるか(つまり、ショックが発生するか)を見つける必要があるということです。argmaxソリューションを実行する場合、ゼロに非常に近いため、常にkの最後の値を取得します。関数でdouble値を与える要素の後に、最初の値が必要です。
[編集]小さな例
x=[0,1,2,3,4,5,6,7,8,9,10] #Input
k=[0,1,2,3,4,5,6,5,4,10] #adjusted for speed
output I want
in this case, 5 is the first number that goes above a number that comes after it.
So I need to know the index of where 5 is located and possibly the index
of the number that it is greater than