Prev: - | Next: Array construction

**Numpy**(short for 'Numerical Python'): is the fundamental (but not the only) package required for high performance scientific computing and data analysis- NumPy introduces and makes extensive use of the
**ndarray**(**n**th-**d**imensional array) type, which is a*homogeneous multidimensional array: it is a table of elements (usually numbers), all of the same type, indexed by a tuple of positive integers*.

- It offers
**standard mathematical functions**for fast operations on entire arrays of data without having to write loops ('array oriented computing') - An ndarray object can be of any dimension but most usually we deal with one-, two- or three- dimensional arrays (see figure below).

- A common question is
**why we do we need the ndarray object since we can do the same operations with lists?** - The typical answer includes two legs:
- (a)
**Speed**of code execution: A list is a flexible collection of various objects (integers, floats, strings, other objects, etc.). This flexibility however requires system memory and time for implementing various processes necessary for list construction and management. An array instead is a much more compact (although less flexible) object minimizing the code execution time and required system memory. - (b)
**Vectorization**: arrays are equipped with lots of functions that support vectorization, which is the ability to**apply operations (addition, multiplication, etc.) on entire arrays**instead of single numbers (scalars). Thus, many operations that would require loops if using lists are expressed in one single line of code with numpy arrays.

- (a)

- You can get numpy and any documentation you need from numpy homepage
**However**: the easiest way of installing numpy is through some of the popular python distributions that contain several major Python packages

. Free learning material

. See full copyright and disclaimer notice