numpy reshape与负面形状值的混淆

Lin*_* Ma 4 python numpy machine-learning python-2.7 scikit-learn

总是混淆numpy reshape如何处理负形状参数,这里是一个代码和输出的例子,任何人都可以解释reshape [-1,1]在这里发生了什么?谢谢.

相关文档,使用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.]]
Run Code Online (Sandbox Code Playgroud)

Jul*_*ien 8

-1用于从另一个推断出一个缺失的长度.例如整形(3,4,5)(-1,10)相当于整形到(6,10)因为6是有意义形成其它输入的唯一长度.


Agu*_*guy 5

reshape文档:

一个形状维度可以是 -1。在这种情况下,该值是从数组的长度和剩余维度推断出来的。

在您的情况下,它用于将 (3,)S转换为 (3,1) 数组的常见任务。我认为在这种特殊情况下使用S[:, None]会产生相同的效果。