In short: Python is a much better language than Matlab, and has more complete general-language features, but Matlab has a more complete set of scientific computing tools than Python.
Octave also has more complete scientific tools than Python, and is a closer language to Matlab if you're already familiar with it, but also shares the language's flaws. Octave and SciPy are free, Matlab is very not free.
I am mainly focused on Signal Processing, Audio, Acoustics kind of computing.
Me too, and I've found SciPy lacking. Some examples:
- Documentation is poor or non-existent for many functions
Filter design tools convert to transfer function representation internally, so higher-order filters suffer from numerical error problems. (fixed)
- Other functions like
freqs only accept tf representation, which, again, causes numerical error problems.
- Doesn't support filters in second-order-sections representation
- FFTs are not as fast
- Lots of functions from Octave/Matlab don't exist yet in SciPy, and can't be directly translated from Octave because of GPL vs BSD licensing
But I still prefer SciPy, because the language is much nicer to use, and does most of what I need. It's free and open-source, and actively developed, and you can contribute easily just by pushing "Edit" on Github. Since I'm primarily using this to learn and practice signal processing, I don't consider it a problem that I have to contribute documentation (old vs new) or improvements myself. That's the sort of thing I want to learn anyway.
Also, while in the process of trying to fix some of these things, I've uncovered some flaws in Matlab's filter design tools: 1 2 So open-source development with lots of test cases has its advantages, too.