如何使用numpy将一列添加到规范化数组中?

时间:2019-02-07 17:24:36

标签: python numpy

我的代码是

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))

我正在尝试使用第一列中的数组,然后是normX1normX2创建一个新的规范化数组。由于某种原因,我的代码无法正常工作。知道我在做什么错吗?

1 个答案:

答案 0 :(得分:1)

实际的问题是您制作了ones 2D,其中normX1normX2是1D。然后,当您调用np.array((ones[0], normX1, normX2))时,会得到ones的第一行,它是另一个长度为1的数组。np.array的三个参数之间的长度不匹配会导致它返回列表的列表。对象(带dtype=object的numpy数组)代替。

我只是将ones的大小做成足以容纳所有数据的位置,并避免再增加一个数组。然后只需将normX1normX2的值分配给该数组的列即可:

normalizedX = np.ones((normX2.shape[0], 3))
normalizedX[:,1] = normX1
normalizedX[:,2] = normX2
print(normalizedX)