NumPy, short for Numerical Python, is the foundation for many widely used Python libraries. Many libraries in the machine learning field depend on it: Tensorflow, PyTorch, scikit-learn etc. The main featureset of NumPy is that it efficiently implements numerical data structures such as matrices and arrays in Python, as the built-in language datastructures don’t offer this featureset. Along with these data structures NumPy also implements mathematical operations that can be applied to these datastructures such as matrix inverses or matrix decomposition operations.
NumPy was created by Travis Oliphant in 2006, he merged together
Numarray to create the initial 1.0 version of
NumPy. It was initially part of the larger
SciPy project, however to avoid installing the entire large SciPy package it was split off from SciPy into its own NumPy package.
About the team
The team consists of four members:
NumPy, short for Numerical Python, is a Python library that provides functionality for scientific computing. The first versions of the library were initially part of SciPy under the name Numeric. As the library became more popular and required more flexibility and speed, numarray was created as a replacement by the Space Science Telescope Institute. Numeric and numarray were eventually split up, but in 2005, Travis Oliphant reunited them, separated everything from SciPy and named the new library NumPy. In 2006, the library was included in Python’s standard library.
This is the second installment of our 4-essay-long series about the NumPy project. For the first essay about the stakeholders and project in general, please visit this page. In this second essay, we will take look at NumPy from different architectural perspectives which are based on literature. These different views aim to give the reader insight into how NumPy implements it’s key properties.
Software quality plays an important role in an open-source library that is being used in software projects worldwide. It helps in keeping the code maintainable and the releases stable. In this third part of our essay series about the NumPy project we will have a look at the software quality of the NumPy source code and how this quality is assured by the developers of the project.
In this fourth and final essay of our series on the NumPy project we will combine two very important aspects of developing a (software) product: the technological aspect and the social aspect. As an architecture is designed, developed and built-upon by humans, the social side of the process should not be overlooked. Conway’s Law will play a central role in this techno-social analysis of the NumPy project.