@Robert, good point, always good to try out code before speculating on a thread. ;) Here’s working code to do the averaging, though it’s not block-wise, you’ll have to add that on top with dask/util.apply_parallel. Note also that because of the C-order of numpy arrays, it’s much more efficient to think of axis 0 as the “vertical” axis, rather than axis 2. See http://scikit-image.org/docs/dev/user_guide/numpy_images.html#notes-on-array... for more info. import numpy as np from skimage import util vol = np.linspace(1, 125, 125, dtype=np.int32).reshape(5, 5, 5) window_shape = (1, 3, 3) windows = util.view_as_windows(vol, window_shape) print(windows.shape) # (5, 3, 3, 1, 3, 3) averaged = np.mean(windows, axis=(3, 4, 5)) HTH! Juan. On 16 Sep 2017, 12:34 PM +1000, Robert Kern <robert.kern@gmail.com>, wrote:
On Sat, Sep 16, 2017 at 7:16 AM, Chris Barker - NOAA Federal <chris.barker@noaa.gov> wrote:
No thoughts on optimizing memory, but that indexing error probably comes from np.mean producing float results. An astype call shoulder that work.
Why? It's not being used as an index. It's being assigned into a float array.
Rather, it's the slicing inside of `trace_block()` when it's being given arrays as inputs for `x` and `y`. numpy simply doesn't support that because in general the result wouldn't have a uniform shape.
-- Robert Kern _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion