Podczas zmniejszania próbkowania interpolacja jest niewłaściwa. Zawsze używaj podejścia zbiorczego.
Używam środków blokowych, aby to zrobić, używając "współczynnika", aby zmniejszyć rozdzielczość.
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
przykład, A (100, 200) tablicę kształt stosując 5-krotnie (bloków 5x5) daje w wyniku (20, 40) tablicy:
ar = np.random.rand(20000).reshape((100, 200))
block_mean(ar, 5).shape # (20, 40)
o to fragment kodu: 'findiff = scipy.misc.imresize (edycja, 30, interp = 'dwuliniowo', tryb = None) frefcobj = m.pcolormesh (x, y, findiff, cieniowanie = "płaskie", vmin = -15, vmax = 15, cmap = cmap, zorder = 1) colbar = m.colorbar (frefcobj, "bottom", size = "4%", pad = "5%", extend = 'both', ticks = intervals) ' diff to macierz 699x699. Wydaje się, że nie spełnia on tego zadania. – wuffwuff
Nigdy wcześniej nie próbowałem imresize, ale dodałem fragment za pomocą zoomu. Czy tego nie szukasz?W tej chwili nie mogę przetestować imresize, ponieważ mam starszą wersję scipy, która nie zawiera go. – Hammer
Interesujące. Wydaje się, że nie jest to "ponowne próbkowanie", tak jak tego, czego szukam. Zamiast tego wziął tablicę diff i wydrukował ją wiele razy w oknie mapy bazowej. Myślę, że potrzebuję jakiejś agregacji lub techniki rozpuszczania. Dzięki za twój wkład do tej pory. – wuffwuff