0

numpyの2D配列があり、(r、c-1)(row r、coloumn c)が特定の値(int n)に等しいcoloumncを返すようにします。

次のような行を繰り返して書きたくない

for r in len(rows):  
  if array[r, c-1] == 1:
    store array[r,c]

、4000個あり、この2D配列は20個のうちの1つにすぎないため、トラフを確認する必要があります。

「フィルター」を見つけましたが、使い方がわかりません(ドキュメントが見つかりません)。

そのような検索を提供する機能はありますか?

4

2 に答える 2

4

私はあなたの質問を正しく理解したと思います。配列があるとしましょうa

a = array(range(7)*3).reshape(7, 3)
print a
array([[0, 1, 2],
       [3, 4, 5],
       [6, 0, 1],
       [2, 3, 4],
       [5, 6, 0],
       [1, 2, 3],
       [4, 5, 6]])

そして、最初のエントリがであるすべての行を抽出したいとします2。これは次のように実行できます。

print a[a[:,0] == 2]
array([[2, 3, 4]])

a[:,0]は配列の最初の列を示し、== 2一致するエントリをマークするブール配列を返します。次に、高度なインデックスを使用してそれぞれの行を抽出します。

もちろん、NumPyはすべてのエントリを反復処理する必要がありますが、これはPythonで実行するよりもはるかに高速です。

于 2010-11-21T19:57:33.087 に答える
0

Numpy配列はインデックス付けされません。この特定の操作を配列サイズで線形よりも効率的に実行する必要がある場合は、numpy以外のものを使用する必要があります。

于 2010-11-21T19:50:50.737 に答える