Last I checked GNURadio allows you to import raw Python blocks to run on your signal. There shouldn't be anything stopping you from using this library inside of GNURadio, however you can also get away with not using GNURadio at all given how indepth this library is. So the answer is, it can be both. It could be super useful in conjunction with GNURadio when first decoding a protocol in order to really understand the signal you've captured, and then you can script it in Python sans GNURadio to automate the signal interpretation.
As far as I understand this book, he only uses standard scientific stack Python (numpy+scipy+matplotlib) to do all of the signal processing part. `pyadi-iio` is only used to interface Python with PlutoSDR hardware for data acquisition
Yep it's an alternative, for those getting started. My book doesn't actually involve using/creating a python library, so it's more of a tutorial type of thing. GNU Radio is great if you are doing a streaming-style RF app. It's also great if you want to share your app or individual blocks with others. It's not as good if your app is more packetized than streaming, or if you need GUI elements that don't come with GNU Radio. But if the only GUI you need is time/freq plots or waterfall/spectrograms, and various inputs, GNU Radio will save you a lot of time.
> Marc is also one of the leads for the GNU Radio project, an open source SDR framework that is widely used in academia and defense related research. While Python is great for learning, rapid experimentation, and development, it does not lend itself well to large and computationally complex apps. GNU Radio can act as a good stepping stone for more advanced DSP apps, and a GNU Radio app or individual block is very easy to share with others.