# Numpy Manual TOC

This is a suggestion on what to put in the narrative documentation for Numpy.

The aim here is to write narrative documentation that illustrates how Numpy is best used in practice, demonstrating various features it offers, with examples and enlightened discussion.

Below, a draft for the table of contents is listed. It is formed by looking at

and stealing whatever seemed good to include. It's a rough draft, and probably needs tuning at various points. Also, I'm aware not all of Numpy is there now, so additions should also be made.

Introduction to Numpy

- What it is
- What is there: a very high-level overview
- Conventions in this manual

Installing Numpy

- Instructions for getting binaries
- Instructions for building from source, on different platforms

- Basics of arrays

- What is an array
Storing data in arrays

- Arrays as literals
- Creating arrays: empty, zeros, ones, ...
- Saving/loading to a file: text, npz -> point to other IO routines
Extracting data from arrays

- Basic indexing and slicing
- Simple fancy indexing
Finding items in arrays

- comparisons, logic operations, indexing based on them
- where, searchsorted
- Advanced indexing on arrays: ellipsis, newaxis
Views and copies of arrays

- Demonstrate that slicing in general creates views
Modifying contents of arrays

- Setting data in arrays via indexing
- add, multiply subtract
- in-place operations (+ the common indexing caveat!)
- sum, mean, min, max, ...
- remark on ufuncs: common methods
- Operating on an axis of an array
- Broadcasting
Joining, splitting arrays and changing their shape

Working with different types of data: integers, floats, complex, strings...

- Basic creation of arrays with certain data types
- Building up data type objects
- Casting and converting array data, automatic casting, coercion
Advanced data types and structured arrays

- Creating structured arrays
- Defining them: literals, loading from files
- Accessing data in them

Other topics

Working with missing data

- NaNs as masking
- Masked arrays

- Linear algebra and matrices
- Working with polynomials
- Floating point issues: errors, error handling, inaccuracy, etc.
- Fourier transforms
- Generating random numbers
- Building and testing packages using Numpy
- Financial calculations with Numpy

Extending Numpy

- Subclassing numpy arrays
- Array interface
- Ctypes support in Numpy
- Cython? Pyrex? F2Py?
Writing C extensions using Numpy

- Basics
- Iteration
- Ufuncs
- Data types
- Subclassing in C

Numpy internals

- Memory model
- Data type stuff
- Ufuncs
- etc?

Reference

<insert our current "reference manual" here as-is and factor out any duplication later on>