2017-06-26 1 views
0

Ich versuche, Werte zu einem numby Array aufzufüllen. Das Array wird anfänglich mit Einsen gefüllt, und mein Ziel ist es, die Werte von Einsen in bestimmten Indizes mit Werten aus einem anderen Array zu überschreiben.Wie kann ich Werte in Array 1 mit Werten von Array 2 bei Indizes von Array 3 auffüllen?

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.] 

Was will ich bekommen ist:

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

Ich denke, es gibt einen Weg, dies zu tun, um eine OrderedDict verwenden, obwohl ich immer noch bin versucht, es herauszufinden. Ich bin auch zuversichtlich, dass es eine schnelle Annäherung über numpy gibt. Ich hoffe, dieses Beispiel auf meinen aktuellen Datensatz anzuwenden, für den len(idx_pad) = 10322 und len(mask) = 69268. Jede Hilfe wäre willkommen.

+2

'mask [idx_pad] = values'? – Divakar

+0

Ich wusste nicht, dass ich mehrere Indizes verwenden könnte, ich war fälschlicherweise davon ausgegangen, dass nur ein einzelner Wert so übergeben werden könnte. Vielen Dank! Wenn du als Antwort postest, werde ich akzeptieren. – mikey

+0

Würde Sie ermutigen, Ihre Ergebnisse in einem selbst beantworteten Post zu veröffentlichen. – Divakar

Antwort

2

Dies ist die Lösung über @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. ] 
Verwandte Themen