2017-05-12 5 views
0

Zum Beispiel, wenn ich numpy maskierte Array als Index verwendet werden soll, habe ich einige Probleme:Wie maskiertes Array als Index in Python verwenden?

import numpy as np 
a=np.array([0,1,2,3,4,5]) 
b=np.array([[0,1],[3,5]]) 
>>> a[b] 
    array([[0, 1], 
      [3, 5]] 

gut, das Problem ist, Nummer 3 in b ist nicht das, was ich will. Das Ergebnis i GETI wollen, ist wie

a[b]=array([[0, 1], 
       [5]]) 

so habe ich die numpy.ma:

b=np.ma.masked_equal(b,3) 
>>> b 
masked_array(data = 
[[0 1] 
    [-- 5]], 
     mask = 
[[False False] 
[ True False]], 
    fill_value = 3) 
>>> a[b] 
array([[0, 1], 
    [3, 5]]) 

Wie wir sehen können, arbeitet der maskierte Wert noch als Index, ist es eine Möglichkeit, es zu beheben ?

+0

Was bedeutet "ignorieren" in diesem Zusammenhang? Im Allgemeinen arbeiten maskierte Arrays nur mit maskierten Array-Funktionen und -Methoden. Sie sind kein Ersatz für reguläre Arrays. Aber mit mehr Informationen können wir Wege vorschlagen, um es zu benutzen, oder etwas Gleichwertiges. – hpaulj

Antwort

0
>>> np.ma.masked_array(a[b.data], b.mask) 
masked_array(data = 
[[0 1] 
[-- 5]], 
      mask = 
[[False False] 
[ True False]], 
     fill_value = 999999) 
+1

Vielen Dank für dieses Code-Snippet, das eine begrenzte, sofortige Hilfe bieten kann. Eine angemessene Erklärung [würde erheblich verbessern] (// meta.stackexchange.com/q/114762) ist ihr langfristiger Wert, indem sie zeigt * warum * das ist eine gute Lösung für das Problem, und würde es für zukünftige Leser mit mehr nützlich machen andere, ähnliche Fragen. Bitte [bearbeiten] Sie Ihre Antwort, um einige Erklärungen hinzuzufügen, einschließlich der Annahmen, die Sie getroffen haben. –

Verwandte Themen