Ex. 2, Flattening syntax problem


I 've tried the above syntax for flattening in a separate example to understand it, and I had a problem with the ‘-1’, if I changed it to any other value an error occurs, and I couldn’t figure out what it is doing here.

Thanks.

When using the reshape function you have to use two dimensions which make sense for the array you are working with.

Example:

a = np.array([0, 1, 2, 3, 4, 5])

# we can reshape the array to be a (3,2)
a.reshape(3, 2)

array([[0, 1],
       [2, 3],
       [4, 5]])

# when we use -1 the dimension is inferred so it makes sense
# for example if we put (2, -1) the dimension inferred will be 3
# so the array becomes (2, 3)
a.reshape(2, -1)

array([[0, 1, 2],
       [3, 4, 5]])

So, the -1 is put above because the second dimension is unknown and we want to invert the array anyway ?

and for the example you gave, what should happen if the array can’t be transformed to (2, -1) or (2, 3) ?

Thanks.

The -1 is not to invert the array but rather to infer the missing value

If the array cannot be reshaped then you get an error, for example, the array a cannot be reshaped as (5, -1) because there is no number to be put in place of -1 that would allow the array to be reshaped:

>>> a = np.array([0, 1, 2, 3, 4, 5])
>>> a.reshape(5, -1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: cannot reshape array of size 6 into shape (5,newaxis)

Got it, Thanks so much.