2017-05-05 10 views
1

私は、サイズが10で、値が0から4の範囲の配列がAです。私はこれから新しい2-D配列Bを作成したいのですが、i番目の列はAのi番目の要素に対応するベクトルです。numpyの配列を効率的に変更する

例えば、Aの最初の要素としての値1は、列ベクトル[0,1,0,0,0]を最初の列として使用します。コードは、それがやっていることになっているもの

import numpy as np 

A = np.random.randint(0,5,10) 
B = np.ones((5,10)) 

iden = np.identity(5, dtype=np.float64) 

for i in range(0,10): 
    a = A[i] 
    B[:,i:i+1] = iden[:,a:a+1] 

print A 
print B 

やっているが、私はそこにあると確信しています:その3番目の要素として持つ4は、[0,0,0,1,0]

として、私は次のコード3番目の列を持っていたBに対応することになりますこれを行うより効率的な方法。誰でもお勧めしますか?そうのように、A及び割り当て1sからインデックスとそれにゼロのアレイと、次に整数インデックス作成を初期化することによって解決することができる

答えて

1

-

M,N = 5,10 
A = np.random.randint(0,M,N) 
B = np.zeros((M,N)) 
B[A,np.arange(len(A))] = 1 
+0

は、ありがとうございました。正確に私が探しているもの。 –

関連する問題