Using stride tricks with NumPy
In this recipe, we will dig deeper into the internals of NumPy arrays, by generalizing the notion of row-major and column-major orders to multidimensional arrays. The general notion is that of strides, which describe how the items of a multidimensional array are organized within a one-dimensional data buffer. Strides are mostly an implementation detail, but they can also be used in specific situations to optimize some algorithms.
Getting ready
We suppose that NumPy has been imported and that the id
function has been defined (see the previous recipe, Understanding the internals of NumPy to avoid unnecessary array copying).
How to do it...
Strides are integer numbers describing the byte step in the contiguous block of memory for each dimension.
In [3]: x = np.zeros(10); x.strides Out[3]: (8,)
This vector
x
contains double-precision floating point numbers (float64, 8 bytes); one needs to go 8 bytes forward to go from one item to the next.Now, let's look at the strides...