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



我一直在尝试构建一个神经网络,为此我必须将数据分为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.]

请告诉我如何解决此错误。提前感谢..!!

您可能需要查看 numpy 索引文档。

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

注意:您正在使用此索引创建 2D 数组(形状为 (len(data(, 1((。如果你想要一维数组,只需使用整数,而不是切片,作为第二项:

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

@w-m 在他们的答案中所说的是正确的,您目前正在将所有行(第一:(和所有列,从零到第一列,不包括上限,分配给x(带:1(和所有行(再次是第一:(和所有列,从零到第二列, 不包括上限,y(带:2(。

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

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

x, y = data.T

这转置('T(数据,即交换两个维度,之后第一个维度的长度为2。如果您的实际数据包含的列数超过此值,则可以使用:

x, y, *rest = data.T

在这种情况下rest将是其余列的列表。此语法是在 Python 3.0 中引入的。

最新更新