Array Objects

Numeric supplies a type array that represents a grid of items. An array object a has a given number of dimensions, known as its rank, up to some arbitrarily high limit (normally 30, when Numeric is built with default options). A scalar (i.e., a single number) has rank 0, a vector has rank 1, a matrix has rank 2, and so forth.

Typecodes

The values in the grid cells of an array object, known as the elements of the array, are homogeneous, meaning they are all of the same type, and all element values are stored within one memory area. This contrasts with a list, where items may be of different types, each stored as a separate Python object. This means a Numeric array occupies far less memory than a Python list with the same number of items. The type of a’s elements is encoded as a’s typecode, a one-character string, as shown in Table 16-2. Factory functions that build array instances (covered in Factory Functions) take a typecode argument that is one of the values in Table 16-2.

Table 16-2. Typecodes for Numeric arrays

Typecode

C type

Python type

Synonym

'c'

char

str (length 1)

Character

'b'

unsigned char

int

UnsignedInt8

'1'

signed char

int

Int8

's'

short

int

Int16

'w'

unsigned short

int

UnsignedInt16

'i'

int

int

Int32

'u'

unsigned

int

UnsignedInt32

'l'

long

int

Int

'f'

float

float

Float32

'F'

Two floats

complex

Complex32

'd'

double

float

Float

'D'

Two doubles

complex

Complex

'O'

PyObject*

any

PyObject

Numeric supplies readable attribute names for each typecode, as shown in the last column of Table 16-2. Numeric also supplies, ...

Get Python in a Nutshell, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.