1

プロットの x (data[:,0]) および y(data[:,1]) 情報を含む 2D numpy 配列があります。

データに曲線を当てはめたいのですが、データの特定の部分のみを使用して当てはめパラメータを決定します (たとえば、範囲 x = x1 -> x2、および x3 -> x4 のデータを使用)。これを行う私の計画は、SciPy CurveFitting ルーチンに渡す予定のデータのみを含む新しい numpy 配列を作成することです。

index_range1 = np.where((data[:,0] > x1) and (data[:,0] < x2)
index_range2 = np.where((data[:,0] > x3) and (data[:,0] < x4)

次に、これらのインデックス範囲を使用して、関心のあるデータを新しい配列に取り込み、CurveFit に渡します。

まず、Python が複雑な配列を処理できることを考えると、これは非常に非 Pythonic なアプローチのようです。次に、スクリプトを実行すると、index_range 1 と 2 の式で .any() または .all() を使用する必要があるというエラーが表示されます。

したがって、この問題を解決するための改善された、よりPythonicなアプローチについて誰かが提案を持っているのだろうか。

ありがとう!

4

2 に答える 2

2

この場合、次を使用しますnumpy.logical_and

>>> import numpy as np
>>> data = np.arange(100)
>>> data[np.logical_and(50 <= data,data <= 70)]
array([50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
       67, 68, 69, 70])

その理由は、通常andの python では、左側の配列を見て、「これは本当ですか?」と言うからです。ただし、配列には「真のような」という概念がないため (「真の」配列がどのように見えるかを推測することを拒否します)、表示される例外を発生させます (おそらくallまたはanyメソッドを使用するつもりだったことを示唆しています)。 )。

于 2013-05-07T13:49:19.907 に答える