There as a general n-dimensional SWT for Python in the PyWavelets package as of the 0.5.0 release.
Basic usage with data
stored in a NumPy array would be as follows (shown here for a 4-level decomposition and Debauchies 'db2' wavelet). PyWavelets uses the same wavelet naming conventions as the Matlab Wavelet Toolbox.
import pywt
coeffs = pywt.swtn(data, wavelet='db2', level=4)
The example above takes <2 seconds for a 128x128x128 data array on my system.
If you are willing to build from source, there is also an n-dimensional inverse SWT available in the master branch. Note that the inverse stationary wavelet transform is not currently implemented in a very efficient manner (particular for larger number of levels of decomposition).
In 3D, the SWT is redundant by a factor of (1 + 7*L)
for an L
-level decomposition (Although the implementation in PyWavelets currently returns the approximation coefficients at every level, not just the final one, leading to a redundancy of 8*L
in 3D).