在Python中切片列

时间:2017-07-07 07:39:55

标签: python numpy dataframe

我是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执行操作。谁能帮助我解决这个问题?

2 个答案:

答案 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)。