我的代码是
import numpy as np
housing_data = np.loadtxt('Housing.csv', delimiter=',')
x1 = housing_data[:,0]
x2 = housing_data[:,1]
y = housing_data[:,2]
avgX1 = np.mean(x1)
stdX1 = np.std(x1)
normX1 = (x1 - avgX1) / stdX1
avgX2 = np.mean(x2)
stdX2 = np.std(x2)
normX2 = (x2 - avgX2) / stdX2
ones = np.ones((normX2.shape[0], 1))
normalizedX = np.array((ones[0], normX1, normX2))
我正在尝试使用第一列中的数组,然后是normX1
和normX2
创建一个新的规范化数组。由于某种原因,我的代码无法正常工作。知道我在做什么错吗?
答案 0 :(得分:1)
实际的问题是您制作了ones
2D,其中normX1
和normX2
是1D。然后,当您调用np.array((ones[0], normX1, normX2))
时,会得到ones
的第一行,它是另一个长度为1的数组。np.array
的三个参数之间的长度不匹配会导致它返回列表的列表。对象(带dtype=object
的numpy数组)代替。
我只是将ones
的大小做成足以容纳所有数据的位置,并避免再增加一个数组。然后只需将normX1
和normX2
的值分配给该数组的列即可:
normalizedX = np.ones((normX2.shape[0], 3))
normalizedX[:,1] = normX1
normalizedX[:,2] = normX2
print(normalizedX)