Lin Ma Lin Ma - 3 months ago 26
Python Question

numpy reshape confusion with negative shape values

Always confused how numpy reshape handle negative shape parameter, here is an example of code and output, could anyone explain what happens for reshape [-1, 1] here? Thanks.

Related document, using Python 2.7.

http://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html

import numpy as np
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder

S = np.array(['box','apple','car'])
le = LabelEncoder()
S = le.fit_transform(S)
print(S)
ohe = OneHotEncoder()
one_hot = ohe.fit_transform(S.reshape(-1,1)).toarray()
print(one_hot)

[1 0 2]
[[ 0. 1. 0.]
[ 1. 0. 0.]
[ 0. 0. 1.]]

Answer

-1 is used to infer one missing length from the other. For example reshaping (3,4,5) to (-1,10) is equivalent to reshaping to (6,10) because 6 is the only length that makes sense form the other inputs.