Importing ulab
The ulab module is split into two main parts ulab.numpy
and ulab.scipy
each of which provide similar functionality to their respective CPython library counterpart. You can rename ulab.numpy
when you import it to use the shorthand name np. from ulab import numpy as np
then in your code you can call the functions like np.sum()
etc. Many existing CPython numpy examples are written to use this shorthand name.
Working with CircuitPython and Blinka
Where possible, if a ulab function and a numpy function have the same name, ulab's functionality is a subset of numpy.
try: import ulab.numpy as np except ImportError: import numpy as np u = np.array([1,2,3,4]) v = np.array([1,-2,1]) print(np.convolve(u, v))
Numpy/ulab differences
Many ulab functions do not support all the same arguments as numpy. For instance, numpy.convolve
supports several ways of controlling how the boundary conditions are handled, using the mode=
named parameter. However, ulab.numpy.convolve
always acts like numpy's mode='full'
.
In a few cases, numpy accepts a positional argument but ulab requires a named parameter. This is true of ulab.numpy.linspace
's num=
argument, for instance.
ulab does not support complex numbers. Because of this, ulab's fft returns a pair of arrays, where the first array holds the real part of the fft and the second array holds the imaginary part. Instead of using fft directly, consider whether to use ulab.scipy.signal.spectrogram
instead. For compatibility with both CircuitPython and Blinka, spectrum can be implemented as follows:
try: from ulab import numpy as np except ImportError: import numpy as np try: from ulab.scipy.signal import spectrogram except ImportError: def spectrogram(arr): return abs(np.fft.fft(arr)) data = np.array([1,2,1,4]) print(spectrogram(data))
Page last edited March 08, 2024
Text editor powered by tinymce.