2012-01-10 14 views
5

インデックス配列Iを指定すると、インデックスが存在しないデータ配列Dの値を設定する方法Inumpyでこの配列のインデックスを作成するには

例:Aを取得するにはID

I = array([[1,1], [2,2], [3,3]]) 

D = array([[ 1, 2, 3, 4, 5, 6], 
      [ 7, 8, 9, 1, 2, 3], 
      [ 4, 5, 6, 7, 8, 9], 
      [ 1, 2, 3, 4, 5, 6], 
      [ 7, 8, 9, 1, 2, 3]]) 

A = array([[ 0, 0, 0, 0, 0, 0], 
      [ 0, 8, 0, 0, 0, 0], 
      [ 0, 0, 6, 0, 0, 0], 
      [ 0, 0, 0, 4, 0, 0], 
      [ 0, 0, 0, 0, 0, 0]]) 

編集:私はIdは大きなされている場合を一発でこれを行う方法を探しています。

答えて

10

シンプルなソリューション:

A = zeros(D.shape) 
for i, j in I: 
    A[i, j] = D[i, j] 

ベクトル化:

​​
+0

それを行うための適切なベクトル化された方法はありますか? 「D」と「A」の両方が大きくなるので、これを非効率的に実行するのは恐ろしいことです。 – ajwood

+0

@ajwood:ベクトル化されたバージョンを見つけて投稿しました。 –

関連する問題