Array Programming with NumPy
Everyone uses numpy, but not because they want to or the API itself provides some massive value. They use it because unless you&#x27;re calling into C for literally every operation, Python is far too slow to get any scientific computing work done.<p>And because of this, numpy has to be much larger and less orthogonal. It needs to provide a wide range of functions that ensure that the user will never have to drop into regular Python and suffer a 100x performance hit. This is unfortunate, and prevents numpy by having the beauty and orthogonality of true array languages like apl, j, or kdb+&#x2F;q.<p>This problem makes it difficult for new scientific users of Python to write fast code. Everything can be fast and then you add one if statement and the performance falls off a cliff. I&#x27;ve helped many people in various labs as this is a recurring problem that researchers face.<p>As such, the ease of use that Python supposedly has for scientific computing is a lie. The APIs are extremely complex, from numpy to Pandas to statsmodel and scikit. And they have to be, because scientific Python can&#x27;t compose code due to performance reasons.<p>In contrast, Julia is much easier to learn, easier to use, and is pretty much better than Python for scientific applications in every way imaginable. In other words, it is strictly superior. The performance is consistently fast and array manipulation is built into the core language, unlike with Python. You are free to write Julia code instead of shelling out to C.<p>I&#x27;ll probably get down voted, but Python should not be used for new scientific computing projects. I&#x27;ve had tons of experience with ml&#x2F;financial Python and after trying Julia, I&#x27;ll never go back willingly. The difference in speed, complexity, ergonomics, and expressivity is so stark it&#x27;s hard to imagine why anyone would choose Python for a greenfield scientific computing project in 2020, especially since Julia can trivially access all of Python&#x27;s ecosystem.