2017-06-26 8 views
0

数値の配列に値をペイントしようとしています。配列は最初は1で埋められ、私の目標は、指定されたインデックスの値を別の配列の値で上書きすることです。私が取得したい何配列1の値を配列2の値で配列3のインデックスに貼り付けるにはどうすればよいですか?

import numpy as np 
# get initial array of ones 
mask = np.ones(10) 
# get values to overwrite ones at indices 
values = [10, 30, 50.5] 
# get indices for which values will replace ones 
idx_pad = [1, 6, 7] 

print(mask) 
>> [ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.] 

は次のとおりです。

>> [ 1 10 1 1 1 1 30 50.5 1 1 ] 

私はまだそれを理解しようとしているのに、私は、OrderedDictを使用してこれを行う方法があると思います。私はまた、numpyを介して高速なアプローチがあることを願っています。この例を実際のデータセットに適用したいと考えています(len(idx_pad) = 10322len(mask) = 69268)。どんな助けもありがとう。

+2

'mask [idx_pad] = values'? – Divakar

+0

私はそれのような複数のインデックスを使用することができないことを認識していませんでした。私は間違って、1つの値だけがそのように渡されるという仮定の下に間違っていました。ありがとう!あなたが答えとして投稿するなら、私は受け入れます。 – mikey

+0

自己回答の投稿にあなたの発見を投稿することをお勧めします。 – Divakar

答えて

2

これは@Divakarによる解決方法です。

import numpy as np 
# get initial array of ones 
mask = np.ones(10) 
# get values to overwrite ones at indices 
values = [10, 30, 50.5] 
# get indices for which values will replace ones 
idx_pad = [1, 6, 7] 

print(mask) 
>> [ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.] 

# replace values at indices in idx_pad 
mask[idx_pad] = values 

print(mask) 
>> [ 1. 10. 1. 1. 1. 1. 30. 50.5 1. 1. ] 
関連する問題