Ich möchte (eine Scheibe von) ein maskiertes numpy Array zuweisen, aber nicht die Maske ändern. (Die Zuweisung löscht normalerweise die Maske (es sei denn, sie ist "hart"), was der Maskierung völlig entgegengesetzt zu sein scheint, aber das ist es, womit wir arbeiten müssen.) Ich möchte auch, dass diese Routine für unmaskierte Arrays funktioniert.Assign to masked numpy array ohne Maske zu entfernen?
Gibt es einen besseren Weg dies zu tun als die Maske zu speichern und wiederherzustellen?
a = np.ma.array([0, 1, 2], mask=[0, 1, 0])
mask = a.mask.copy() if np.ma.is_masked(a) else None # Have to copy because it might be shared
a[a < 2] = -1
if mask is not None:
a.mask = mask
print(a, a.data)
# [-1 -- 2] [-1 -1 2]
Dies ist Python 2, numpy 1.11.1.