更新矩阵时的奇怪行为

时间:2016-10-14 22:11:55

标签: arrays python-3.x updating

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之后)对应于正在打印的内容?

1 个答案:

答案 0 :(得分:0)

您的数组包含整数类型的值(可能是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.astypedocs)将数组转换为其他类型。