我是Python新手。我想将列从索引1切换到marix的结尾,并对那些切片列执行一些操作。以下是代码:
import numpy as np
import pandas as pd
train_df = pd.read_csv('train_475_60_W1.csv',header = None)
train = train_df.as_matrix()
y = train[:,0]
X = train[:,1:-1]
问题是,如果我执行" train.shape",它会给我(89512, 61 )。但是当我执行" X.shape"时,它会给我(89512, 59 )。我期望得到 60 ,因为我想对除第一个之外的所有colunms执行操作。谁能帮助我解决这个问题?
答案 0 :(得分:1)
即使在普通列表中,你应该知道对单维进行切片的事情是它看起来像这样:
[start : end]
开头included
,结束excluded
。
你也可以使用这些:
[:x] # from the start to x
[x:] # from x to the end
然后你可以概括而不是2D或更多,所以在你的情况下它将是:
X = train[:,1:] # the first : to get all rows, and 1: to get all columns except the first
如果你愿意,你可以在here了解更多相关内容,这是一种很好的练习方法
答案 1 :(得分:0)
在第
行X = train[:,1:-1]
你切断了最后一栏。 -1指的是最后一列,Python包含切片的开头但不包括结尾 - 所以lst[2:6]
会给你条目2,3,4和5.将其更正为
X = train[:,1:]
顺便说一下,你可以通过在每一行之前加上四个空格来正确地制作你的代码格式(你可以突出显示它并点击Ctrl + K)。