日々精進

新しく学んだことを書き留めていきます

numpyで列をまるごと入れ替える

標準化するときなど、列単位で変換して入れ替えることがある。 以下のようにすると2列目を標準化して入れ替えられる。

# X2という行列がすでに定義されているものとする
scaled_X2 = np.copy(X2)
scaler = StandardScaler()
scaled_X2[:, 1] = scaler.fit_transform(X2[:, 1].reshape(-1, 1)).reshape(-1)

X2[:, 1].shape #=> (n, )になる。これは1次元配列で列ベクトルではないのでfit_transformには渡せない。
X2[:, 1].reshape(-1, 1).shape #=> (n, 1)になる。これは列ベクトルなのでfit_transformに渡せる。

参考: stackoverflow.com