2017-07-07 39 views
0

我是Python新手。我希望從索引1的切片列到marix的末尾,並對這些切出的列執行一些操作。以下是代碼:在Python中切分列

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] 

的問題是,如果我execeute 「train.shape」,它給了我(89512,)。但是當我執行「X.shape」時,它給我(89512,)。我期待得到,因爲我想在除第一個之外的所有柱上執行操作。任何人都可以幫助我解決這個問題嗎?

+0

你不想'X = train [:,1:]'?在這裏切片結束切片不包括在內,這不是你想要的 – EdChum

+0

「從索引1到矩陣結束」是'train [:,1:]',而不是'train [:,1:-1]' –

+0

@EdChum謝謝!這是我失蹤的信息! –

回答

0

在行

X = train[:,1:-1] 

你切斷了最後一欄。 -1指的是最後一列,和Python包括開頭,但片還沒結束 - 所以lst[2:6]會給你條目2,3,4和5更正它

X = train[:,1:] 

順便說一句,你可以通過在每行之前包含四個空格來正確設置代碼格式(您可以突出顯示它並按Ctrl + K)。

+0

謝謝......對於這兩個建議!它正在工作! –

0

你應該甚至在正常名單切片爲單一維度知道的事情是,它看起來像這樣:

[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如果你想,這是一個很好的練習方式

+0

謝謝......我不知道Python不包括切片中的最後一列!它運作良好!感謝您的教程鏈接! –

+0

完全沒問題,不要忘記接受最適合你的答案,作爲未來用戶看到這個問題的標誌;)@SumaiyaIqbal –