更新矩阵时的奇怪行为
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) 将数组转换为另一种类型。
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) 将数组转换为另一种类型。