更新矩阵时的奇怪行为

strange behavior when updating matrix

import numpy as np

X_mini=np.array([[   4, 2104,    1],
   [   1, 1600,    3],
   [   3, 2400,    100]])

def feature_normalization(X):

    row_length=len(X[0:1][0])

    for i in range(0, row_length):
        if not X[:,i].std()==0:

            temp=(X[:,i]-X[:,i].mean())/X[:,i].std()
            print(temp)
            X[:,i]=temp



feature_normalization(X_mini)
print(X_mini)

输出:

[ 1.06904497 -1.33630621  0.26726124]
[ 0.209937   -1.31614348  1.10620649]
[-0.72863911 -0.68535362  1.41399274]
[[ 1  0  0]
 [-1 -1  0]
 [ 0  1  1]]

我的问题是,为什么 X_mini(在应用 feature_normalization 之后)与正在打印的内容不一致?

您的数组包含整数类型的值(可能是 int64)。 当分数被插入其中时,它们被转换为 int。

您可以明确指定您创建的数组的类型:

X_mini = np.array([[ 4.0,  2104.0,  1.0],
       [ 1.0,  1600.0,  3.0],
       [ 3.0,  2400.0,  100.0]], dtype=np.float128)

您还可以使用 numpy.ndarray.astype (docs) 将数组转换为另一种类型。