2017-03-03 1 views
1

ブロードキャストを使用して、ある行列のすべての行を別の行列の1行おきにコピーする方法はありますか?私は、次の行列がある場合

a = np.array([['A'], ['B'], ['C']]) 
b = np.array([['0'], ['0'], ['0'], ['0'], ['0'], ['0']]) 

を、私は、次の取得したい:

c = np.array([['A'], ['0'], ['B'], ['0'], ['C'], ['0']]) 

がするのではなく、numpyの放送/ベクトル化ソリューションのいくつかのタイプを使用して、Cを取得する方法はありますforループ?

答えて

1

-

b[::2] = a 

新しい配列におけるこれらの変更を加えるには、コピーして編集します -

c = b.copy() 
c[::2] = a 
+0

ここのステップは本当にこれを洗練された解決策にしています。 – dranobob

1

出来上がり:bでその場編集のために

c = np.reshape(b, (3, 2, 1)) 
c[:,0]=a 
c.shape=6,1 
c 
array([['A'], 
     ['0'], 
     ['B'], 
     ['0'], 
     ['C'], 
     ['0']], 
     dtype='<U1') 
+0

ああ完璧。私はあなたが左側で参照してスプライスを使用することができたことを認識していませんでした。ありがとう! – dranobob

+0

@dranobobはい、それは本当にとても便利です。 –

関連する問題