How can I implement a multi dimensional array or array of records in Python?

Question:

I’ve learned the theory in a computer science class about multi dimensional arrays & records of arrays but I am unsure of how to implement this in Python. I was thinking of using an array of records as it would allow me to have different data types in the one record but at the same time I was thinking that a multi dimensional array would also be good to learn in Python.

I’ve Googled around a bit & I have found numpy but I’m not sure which function in numpy I’d use. I saw one with tuples but I wasn’t keen on using that as tuples can’t be modified.

I’m using Python 3.2 but I don’t mind using Python 2.7 either.

Asked By: Jade L

||

Answers:

Depends how you want to interact with them. Consider using Numpy. Specifically, have a look at the N-Dimensional array. It provides a rich API for manipulation and comparison.

If numpy feels like overkill, you can implement a multi-array using simple tuples/lists.

multi_array = [
    [1, 2, 3, 4, 5],
    [6, 7, 8, 9, 10]
]

>>> multi_array[0][0]
>>> multi_array[1][4]

As an example, to convert multi_array into a numpy ndarray:

import numpy as np
np.ndarray((2, 5), buffer=np.array(multi_array), dtype=int)

Notice that ndarray expects as it’s first argument a shape. This means you need to know the dimensions of the array before you create it. Changing the dimensions of the ndarray is known as ‘reshaping’.

Answered By: Rob Cowie

not sure what you mean by “records” but you could use a list of lists to represent a two dimensional array. read the docs to find out more.

Answered By: WeaselFox
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.