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.]
请告诉我如何解决此错误。谢谢。
答案 0 :(得分:2)
您可能想查看numpy索引documentation。
要使第二列的形状与x
相同,请使用y=data[:, 1:2]
。
注意:您正在使用此索引创建2d数组(形状为(len(data),1))。如果要使用一维数组,请在第二项中使用整数而不是切片:
x = data[:, 0]
y = data[:, 1]
答案 1 :(得分:1)
在@w-m中heir 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。