如何提取数据集中特定列中的元素?

时间:2018-09-27 12:27:10

标签: python numpy neural-network

我一直在尝试建立神经网络,为此我必须将数据分为x和y(我的数据集已转换为numpy)。 “ x”中的数据是我成功提取的第一列,但是当我尝试提取第二列时,我得到了“ y”的x和y值。 这是我用来分割数据的代码:

data=np.genfromtxt("/home/crpsm/Pycharm/DataSet/headbrain.csv",delimiter=',')


x=data[:,:1]
y=data[:, :2]

在这里x和y的输出:

x:-

[[3738.]
[4261.]
[3777.]
[4177.]
[3585.]
[3785.]
[3559.]
[3613.]
[3982.]
[3443.]

y:-

[[3738. 1297.]
[4261. 1335.]
[3777. 1282.]
[4177. 1590.]
[3585. 1300.]
[3785. 1400.]
[3559. 1255.]
[3613. 1355.]
[3982. 1375.]
[3443. 1340.]

请告诉我如何解决此错误。谢谢。

2 个答案:

答案 0 :(得分:2)

您可能想查看numpy索引documentation

要使第二列的形状与x相同,请使用y=data[:, 1:2]

注意:您正在使用此索引创建2d数组(形状为(len(data),1))。如果要使用一维数组,请在第二项中使用整数而不是切片:

x = data[:, 0]
y = data[:, 1]

答案 1 :(得分:1)

@w-mheir answer所说的是正确的,您当前正在分配所有行(前:)和所有列,从零到第一列,不包括上排绑定到x(带有:1)和所有行(同样是第一个:)和所有列,从零开始直到第二列(不包括上限),到{{1 }}(带有y)。

:2

是正确执行此操作的一种方法,但更好的方法是使用元组拆包:

x = data[:, 0]
y = data[:, 1]

这将转置(`T)数据,即交换两个维,然后第一个维的长度为2。如果您的实际数据多于该列,则可以使用:

x, y = data.T

在这种情况下,x, y, *rest = data.T 将是其余列的列表。 This syntax was introduced in Python 3.0