NumPy User Guide

[Pages:81]NumPy User Guide

Release 1.4.0.dev7072 Written by the NumPy community

June 24, 2009

CONTENTS

1 Building and installing NumPy

3

1.1 Binary installers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Building from source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 How to find documentation

7

3 Numpy basics

9

3.1 Data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.2 Array creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.3 Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.4 Broadcasting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.5 Structured arrays (aka "Record arrays") . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.6 Subclassing ndarray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4 Performance

31

5 Miscellaneous

33

5.1 IEEE 754 Floating Point Special Values: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

5.2 Examples: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

5.3 Interfacing to C: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

5.4 Interfacing to Fortran: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5.5 Interfacing to C++: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

5.6 Methods vs. Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

6 Using Numpy C-API

39

6.1 How to extend NumPy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

6.2 Using Python as glue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

6.3 Beyond the Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

Index

77

i

ii

NumPy User Guide, Release 1.4.0.dev7072

This guide explains how to make use of different features of Numpy. For a detailed documentation about different functions and classes, see NumPy Reference (in NumPy Reference).

Warning: This "User Guide" is still very much work in progress; the material is not organized, and many aspects of Numpy are not covered. More documentation for Numpy can be found on the website.

CONTENTS

1

NumPy User Guide, Release 1.4.0.dev7072

2

CONTENTS

CHAPTER

ONE

BUILDING AND INSTALLING NUMPY

1.1 Binary installers

In most use cases the best way to install NumPy on your system is by using an installable binary package for your operating system.

1.1.1 Windows

Good solutions for Windows are, The Enthought Python Distribution (EPD) (which provides binary installers for Windows, OS X and Redhat) and Python (x, y). Both of these packages include Python, NumPy and many additional packages. A lightweight alternative is to download the Python installer from and the NumPy installer for your Python version from the Sourceforge download site

1.1.2 Linux

Most of the major distributions provide packages for NumPy, but these can lag behind the most recent NumPy release. Pre-built binary packages for Ubuntu are available on the scipy ppa. Redhat binaries are available in the EPD.

1.1.3 Mac OS X

A universal binary installer for NumPy is available from the download site. The EPD provides NumPy binaries.

1.2 Building from source

A general overview of building NumPy from source is given here, with detailed instructions for specific platforms given seperately.

1.2.1 Prerequisites

Building NumPy requires the following software installed: 1. Python 2.4.x, 2.5.x or 2.6.x On Debian and derivative (Ubuntu): python, python-dev On Windows: the official python installer at is enough

3

NumPy User Guide, Release 1.4.0.dev7072

Make sure that the Python package distutils is installed before continuing. For example, in Debian GNU/Linux, distutils is included in the python-dev package.

Python must also be compiled with the zlib module enabled.

2. Compilers

To build any extension modules for Python, you'll need a C compiler. Various NumPy modules use FORTRAN 77 libraries, so you'll also need a FORTRAN 77 compiler installed.

Note that NumPy is developed mainly using GNU compilers. Compilers from other vendors such as Intel, Absoft, Sun, NAG, Compaq, Vast, Porland, Lahey, HP, IBM, Microsoft are only supported in the form of community feedback, and may not work out of the box. GCC 3.x (and later) compilers are recommended.

3. Linear Algebra libraries

NumPy does not require any external linear algebra libraries to be installed. However, if these are available, NumPy's setup script can detect them and use them for building. A number of different LAPACK library setups can be used, including optimized LAPACK libraries such as ATLAS, MKL or the Accelerate/vecLib framework on OS X.

1.2.2 FORTRAN ABI mismatch

The two most popular open source fortran compilers are g77 and gfortran. Unfortunately, they are not ABI compatible, which means that concretely you should avoid mixing libraries built with one with another. In particular, if your blas/lapack/atlas is built with g77, you must use g77 when building numpy and scipy; on the contrary, if your atlas is built with gfortran, you must build numpy/scipy with gfortran. This applies for most other cases where different FORTRAN compilers might have been used.

Choosing the fortran compiler To build with g77:

python setup.py build ?fcompiler=gnu To build with gfortran:

python setup.py build ?fcompiler=gnu95 For more information see:

python setup.py build ?help-fcompiler

How to check the ABI of blas/lapack/atlas

One relatively simple and reliable way to check for the compiler used to build a library is to use ldd on the library. If libg2c.so is a dependency, this means that g77 has been used. If libgfortran.so is a a dependency, gfortran has been used. If both are dependencies, this means both have been used, which is almost always a very bad idea.

1.2.3 Building with ATLAS support

Ubuntu 8.10 (Intrepid) You can install the necessary packages for optimized ATLAS with this command:

4

Chapter 1. Building and installing NumPy

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download