2017-06-26 1 views
0

J'essaie de remplir les valeurs d'un tableau numpy. Le tableau est initialement rempli avec des uns, et mon but est d'écraser les valeurs des uns à des index spécifiés avec des valeurs d'un autre tableau.Comment est-ce que je peux placer des valeurs dans le tableau 1 avec des valeurs du tableau 2 aux index du tableau 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.] 

Ce que je veux est:

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

Je pense qu'il ya une façon de le faire en utilisant un OrderedDict, bien que je suis encore à essayer de comprendre. Je suis également plein d'espoir qu'il y a une approche rapide via numpy. J'espère appliquer cet exemple à mon jeu de données réel, pour lequel len(idx_pad) = 10322 et len(mask) = 69268. Toute aide serait appréciée.

+2

'mask [idx_pad] = values'? – Divakar

+0

Je n'avais pas réalisé que je pourrais utiliser plusieurs indices comme ça, j'avais à tort l'hypothèse qu'une seule valeur pouvait être transmise comme ça. Merci! Si vous postez comme réponse, j'accepterai. – mikey

+0

Nous vous encourageons à publier vos résultats dans une réponse personnelle. – Divakar

Répondre

2

Ceci est la solution via @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. ]