2017-04-22 1 views
0

J'ai un DataArray dimensionnel (4,6,3). Je veux mettre à jour des lignes et des colonnes particulières. Disons que je veux mettre à jour la première ligne de n1 [18, 4, 81] à [0,0,0] et mettre à jour la dernière colonne de n4 [15,20,31,91,27,39] à [ 1,1,1,1,1,1]. S'il vous plaît montrer comment?mettre à jour un tableau spécifique dans DataArray

tmp=xr.DataArray(np.random.randint(99,size=(4,6,3)), coords={'sample':['n1','n2','n3','n4'],'delta':['dx','dy','dz']}, dims=('sample','y','delta')) 
<xarray.DataArray (sample: 4, y: 6, delta: 3)> 
array([[[18, 4, 81], 
     [74, 38, 78], 
     [66, 82, 34], 
     [47, 60, 8], 
     [21, 44, 56], 
     [72, 16, 72]], 

     [[58, 57, 80], 
     [56, 17, 17], 
     [61, 83, 87], 
     [ 3, 53, 48], 
     [46, 49, 20], 
     [97, 96, 3]], 

     [[ 8, 73, 79], 
     [20, 89, 16], 
     [70, 39, 60], 
     [32, 52, 49], 
     [41, 79, 19], 
     [91, 25, 40]], 

     [[39, 11, 15], 
     [78, 55, 20], 
     [78, 43, 31], 
     [92, 50, 91], 
     [44, 61, 27], 
     [79, 16, 39]]]) 
Coordinates: 
    * sample (sample) |S2 'n1' 'n2' 'n3' 'n4' 
    * delta (delta) |S2 'dx' 'dy' 'dz' 
Dimensions without coordinates: y 

Répondre

0
tmp[0][0] = [0,0,0] # updates first row to [0,0,0] 

for x in range(len(tmp[3])): # update last column 
    tmp[3][x][2] = 1 
1
tmp[0][0] = np.zeros(3) 
tmp[3][:, 2] = np.ones(6) 

[[[ 0 0 0] 
    [13 17 33] 
    [61 97 6] 
    [29 43 37] 
    [ 5 36 21] 
    [31 85 55]] 

[[69 92 69] 
    [61 63 45] 
    [10 58 56] 
    [30 53 9] 
    [10 83 95] 
    [23 19 71]] 

[[88 83 26] 
    [ 1 1 34] 
    [ 7 80 2] 
    [46 47 55] 
    [ 5 22 63] 
    [40 76 37]] 

[[54 15 1] 
    [95 41 1] 
    [61 43 1] 
    [88 69 1] 
    [45 51 1] 
    [21 57 1]]] 
+0

Est-il possible d'obtenir le même en utilisant des noms de coordonnées? – user2958481

+1

@ user2958481 Je ne suis pas familier avec xarray mais il semble xarray basé sur numpy selon la documentation. Quoi qu'il en soit, la réponse est oui, veuillez vérifier le tableau de syntaxe de recherche sur la page de lien (http://xarray.pydata.org/fr/stable/indexing.html). – su79eu7k