2

関数の複数の x 間隔を表す numpy 配列があります。

In [137]: x_foo
Out[137]: 
array([211, 212, 213, 214, 215, 216, 217, 218, 940, 941, 942, 943, 944,
       945, 946, 947, 948, 949, 950])

ご覧のとおり、x_foo には 2 つの間隔があります。1 つは 211 から 218 まで、もう 1 つは 940 から 950 までです。これらは scipy で補間したい間隔です。このために、間隔を調整する必要があります。たとえば、通常は「211.0 211.1 211.2 ...」とします。

arange( x_foo[0], x_foo[-1], 0.1 )

複数の間隔の場合、これは不可能です。私の質問はここにあります:配列スタイルでこれを行うためのnumpy-thonicな方法はありますか? または、配列全体をループし、差が >1 の場合に分割する関数を作成する必要がありますか?

ありがとう!

4

2 に答える 2

3
import numpy as np
x = np.array([211, 212, 213, 214, 215, 216, 217, 218, 940, 941, 942, 943, 944,
   945, 946, 947, 948, 949, 950])
ind = np.where((x[1:] - x[:-1]) > 1)[0]

218 に等しい x の要素のインデックスが得られます。次に、必要な 2 つの範囲は次のとおりです。

np.arange(x[0],x[ind],0.1)

np.arange(x[ind+1],x[-1],0.1)
于 2010-04-29T14:05:44.587 に答える
1
np.r_[ 211:218+1, 940:950+1 ]
array([211, 212, 213, 214, 215, 216, 217, 218, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950])

r_[]スカラー、範囲、配列、リスト、タプルから行を作成します ...; r_の略だと思いrowます。np.r_?ドキュメントについては、Ipythonを参照してください。
(Python は角括弧内の 211:218 を処理しますが、丸めは処理しないため、 ではありr_[]ません())。

于 2010-05-18T11:47:23.560 に答える