Time for action – manipulating array shapes

We already learned about the reshape function. Another recurring task is flattening of arrays.

  1. Ravel: We can accomplish this with the ravel function:
    In: b
    Out:
    array([[[ 0,  1,  2,  3],
            [ 4,  5,  6,  7],
            [ 8,  9, 10, 11]],
           [[12, 13, 14, 15],
            [16, 17, 18, 19],
            [20, 21, 22, 23]]])
    In: b.ravel()
    Out:
    array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13,14, 15, 16,
           17, 18, 19, 20, 21, 22, 23])
  2. Flatten: The appropriately-named function, flatten, does the same as ravel, but flatten always allocates new memory whereas ravel might return a view of the array.
    In: b.flatten()
    Out:
    array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13,14, 15, 16,
           17, 18, 19, 20, 21, 22, 23])
  3. Setting the shape with a tuple: Besides the reshape function, we can also set the shape directly with a tuple, which is shown as follows:
    In: b.shape = (6,4)
    In: b
    Out:
    array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11],
           [12, 13, 14, 15],
           [16, 17, 18, 19],
           [20, 21, 22, 23]])

    As you can see, this changes the array directly. Now, we have a six-by-four array.

  4. Transpose: In linear algebra, it is common to transpose matrices. We can do that too, by using the following code:
    In: b.transpose()
    Out:
    array([[ 0,  4,  8, 12, 16, 20],
           [ 1,  5,  9, 13, 17, 21],
           [ 2,  6, 10, 14, 18, 22],
           [ 3,  7, 11, 15, 19, 23]])
  5. Resize: The resize method works just like the reshape method, but modifies the array it operates on:
    In: b.resize((2,12))
    In: b
    Out:
    array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11],
           [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]])

What just happened?

We manipulated the shapes of NumPy arrays using the ravel function, the flatten function, the reshape function, and the resize method.

Stacking

Arrays can be stacked horizontally, depth-wise, or vertically. We can use, for that purpose, the vstack, dstack, hstack, column_stack, row_stack, and concatenate functions.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset