This page sketches the history of SciPy and should clarify the differences/relations between SciPy, Numeric, numarray, NumPy and other related packages/projects.

The birth of Numeric

In the beginning there was Numeric. It was originally written in 1995 largely by Jim Hugunin with the help of many people including Jim Fulton, David Ascher, Paul DuBois, and Konrad Hinsen. Unfortunately, Numeric acquired several nicknames: Numerical Python, Numerical, NumPy. For example, the SourceForge project name for it is numpy, the old CVS module is Numerical, Konrad Hinsen named his package ScientificPython in reference to Numerical Python.

Quoting Paul DuBois on the history behind the various names of the project:

The birth of SciPy

Several people used Numeric as a base for their scientific code and developed their own modules. Around 2001, Travis Oliphant, Eric Jones and Pearu Peterson merged their modules in one scientific super package: SciPy was born.

The birth of numarray

Development on Numeric slowed down and people wanted to extend it in ways that the then-current codebase did not really allow. Furthermore, there was a desire to get Numeric or something like it into the standard library, but Guido van Rossum (the father of Python) was quite clear that the code was not maintainable in its state then.

As a result, numarray was created by Perry Greenﬁeld, Todd Miller and Rick White at the Space Science Telescope Institute as a replacement for Numeric. The new numarray pushed some of the code up into the Python level, which gave numarray a lot of flexibility and allowed it to experiment with a number of alternatives that have proven their usefulness. It also was quite fast for very large arrays because the people working on it were at the Space Telescope Science Institute and were intending to use it for astronomical image processing.

The split: Numeric vs. numarray

Unfortunately, as fast as it was for large arrays, numarray was too slow for small arrays. Furthermore, the C API of numarray for creating ufuncs was not as convenient as that of Numeric. This made it difficult to convert the SciPy codebase to use numarray instead of Numeric. This split fractured the community quite a bit: some people wrote code only for numarray, seeing it as the next Numeric, while other people wrote code for Numeric, because they needed SciPy.

The reunion, aka the birth of NumPy

In early 2005, Travis Oliphant wanted to reunify the community around a single array package. He refactored the code of Numeric to make it more maintainable and flexible enough to implement the novel features of numarray. He named this new multi dimensional array project SciPy core and intended to use this in the bigger scientific package SciPy.

The problem with this approach was that people were mistakenly thinking that Numeric had been subsumed into SciPy and that they would have to install SciPy as a whole just to get an array object. There was a long discussion about a better name for this new multidimensional array package. The winning name was numerix, but this name turned out to be trademarked by a company that does DSP. In order to avoid trademark infringement, another name was picked: 'NumPy'.

Inclusion of a Numpy in Python's standard library


  1. the data-type object into Python
  2. extend the buffer interface with the array interface.

Anyone interested in helping with these PEPs should contact Travis Oliphant.

More details

For more details on the development of NumPy, take a look at the chapter Origins of NumPy in the book Guide to NumPy

History of SciPy (last edited 2011-01-20 15:38:19 by JoonRo)