While often our data can be well represented by a homogeneous array of values, sometimes this is not the case. This section demonstrates the use of NumPy’s structured arrays and record arrays, which provide efficient storage for compound, heterogeneous data. While the patterns shown here are useful for simple operations, scenarios like this often lend themselves to the use of Pandas Dataframes, which we’ll explore [prossimamete].
Imagine that we have several categories of data on a number of people (say,
weight), and we’d like to store these values for use in a Python program. It would be possible to store these in three separate arrays:
But this is a bit clumsy. There’s nothing here that tells us that the three arrays are related; it would be more natural if we could use a single structure to store all of this data. NumPy can handle this through structured arrays, which are arrays with compound data types.
Recall that previously we created a simple array using an expression like this:
We can similarly create a structured array using a compound data type specification:
U10‘ translates to “Unicode string of maximum length 10,” ‘
i4‘ translates to “4-byte (i.e., 32 bit) integer,” and ‘
f8‘ translates to “8-byte (i.e., 64 bit) float.” We’ll discuss other options for these type codes in the following section.
Now that we’ve created an empty container array, we can fill the array with our lists of values:
As we had hoped, the data is now arranged together in one convenient block of memory.
The handy thing with structured arrays is that you can now refer to values either by index or by name:
Using Boolean masking, this even allows you to do some more sophisticated operations such as filtering on
Nota per me: notare la specificazione di
data, 2 volte non come mi verrebbe da pensare, vengo dal Fortran 😜
Note that if you’d like to do any operations that are any more complicated than these, you should probably consider the Pandas package, covered [prossimamente]. As we’ll see, Pandas provides a Dataframe object, which is a structure built on NumPy arrays that offers a variety of useful data manipulation functionality similar to what we’ve shown here, as well as much, much more.