Beim Downsampling ist Interpolation das Falsche. Verwenden Sie immer einen aggregierten Ansatz.
Ich benutze Blockmittel, um dies zu tun, mit einem "Faktor", um die Auflösung zu reduzieren.
import numpy as np
from scipy import ndimage
def block_mean(ar, fact):
assert isinstance(fact, int), type(fact)
sx, sy = ar.shape
X, Y = np.ogrid[0:sx, 0:sy]
regions = sy/fact * (X/fact) + Y/fact
res = ndimage.mean(ar, labels=regions, index=np.arange(regions.max() + 1))
res.shape = (sx/fact, sy/fact)
return res
Eg, A (100, 200) Formanordnung einen Faktor 5 (5x5 Blöcke) zu einer (20, 40) -Anordnung Ergebnis mit:
ar = np.random.rand(20000).reshape((100, 200))
block_mean(ar, 5).shape # (20, 40)
ist hier ein Code-Schnipsel: 'findiff = scipy.misc.imresize (diff, 30., interp = 'bilinear', mode = None) frefcobj = m.pcolormesh (x, y, findiff, schattierung = 'flach', vmin = -15, vmax = 15, cmap = cmap, zorder = 1) colbar = m.farbleiste (frefcobj, "bottom", size = "4%", pad = "5%", extend = 'beide', ticks = Intervalle) ' diff ist ein Array von 699x699. Scheint nicht die Aufgabe zu erfüllen. – wuffwuff
Ich habe noch nicht versucht, impresize, aber ich habe ein Snippet mit Zoom hinzugefügt. Ist das nicht wonach Sie suchen?Ich kann imresize im Moment nicht testen, weil ich eine ältere Version von scipy habe, die es nicht zu enthalten scheint – Hammer
Interessant. Es scheint nicht so zu sein, als ob ich nach etwas suche. Stattdessen wurde das Diff-Array genommen und im Grundkartenfenster mehrfach geplottet. Ich denke, ich brauche eine Art Aggregation oder Auflösung von Techniken. Vielen Dank für Ihre Anregungen. – wuffwuff