2017-02-09 4 views
0

でspecifc列の配列を挿入することは、我々は以下のnumpyの配列を持っていることを言うことができます:Pythonのnumpyの:特定のインデックスNR

見つめ
[[ 0 0 0] 
[ 1 0 0] 
[ 2 0 0] 
[ 3 0 0] 
[ 4 0 0] 
[ 5 0 0] 
[ 6 0 0] 
[ 7 0 0] 
[ 8 0 0] 
[ 9 0 0] 
[10 0 0] 
[11 0 0] 
[12 0 0] 
[13 0 0]] 

どのように私はこのnp.arrayを挿入することができ

[[0 45] 
[1 34] 
[2 23] 
[3 56] 
[4 45] 
[5 34]] 

列1と列2のインデックスnr 3から、最終的には次のようになります。

[[ 0 0 0] 
[ 1 0 0] 
[ 2 0 45] 
[ 3 1 34] 
[ 4 2 23] 
[ 5 3 56] 
[ 6 4 45] 
[ 7 5 34] 
[ 8 0 0] 
[ 9 0 0] 
[10 0 0] 
[11 0 0] 
[12 0 0]] 

考えてみましょうindex nrここで、2番目の配列は最初の配列に配置する必要があります。私は、実行のスピードを考慮に入れたソリューションを感謝します。どちらの配列も数百万行あり、最初の配列は常に2番目の配列よりも大きい。

+0

これらの配列がどこから来ているのだろうか? –

+0

こんにちは@PaulPanzer :)、はい、彼らはGPUソリューションから来ています。 CPUソリューションでは、データを分割する必要はありませんでした1。 GPUを使って、私は約3milの行のブロックでdata1を送信しなければならないので、元のインデックスnrを得るために結果を元の配列に戻す必要があります – RaduS

+1

何?これらのオーバーヘッドをベンチマークで説明しましたか?私は再開を要求する! :-P –

答えて

3

ただ、スライスインデックスと受信者のスペースを定義します。

In [79]: arr = np.zeros((10,3),int)  
In [80]: b = np.ones((4,2), int) 
In [81]: nr = 3 
In [82]: arr[nr:nr+b.shape[0], 1:] = b 

In [83]: arr 
Out[83]: 
array([[0, 0, 0], 
     [0, 0, 0], 
     [0, 0, 0], 
     [0, 1, 1], 
     [0, 1, 1], 
     [0, 1, 1], 
     [0, 1, 1], 
     [0, 0, 0], 
     [0, 0, 0], 
     [0, 0, 0]]) 

ただ、形状が一致していることを確認します

In [84]: arr[nr:nr+b.shape[0], 1:].shape 
Out[84]: (4, 2) 

In [85]: b.shape 
Out[85]: (4, 2) 

あなたはnrが収まるには大きすぎる場合に対処するために、インデックスを絞り込むことができarrにはbのすべてが含まれています。

+0

ありがとう@hpaulj :) – RaduS

関連する問題