2013-10-07 17 views
0

我有一個.txt文件,我需要打開它並創建一個數組(在Python中)。但是,我不想爲數組選擇所有行,除了第一行之外的所有行。Loadfile,從.txt文件到數組的特定行

例如,我的.txt文件上寫着:

1 1 1 
1 4 6 
4 5 6 
8 9 7 

和,我想創建一個數組這樣,我可以將它像:

Y= array([[1, 4, 6], [4, 5, 6], [8, 9, 7]]) 

我需要它概括爲未來的文件創建一個省略第一行文本的數組。

+0

你有什麼迄今所做?確保你發佈你的代碼 - 這不僅有助於我們理解你在做什麼,而且可以讓你更輕鬆地給你提供建議。這也是一種禮貌,因爲它表明你在徵求他人努力之前已經做出了努力。 – Brionius

回答

0

你可以做它抓住除了第一個所有其他線路

with open(file) as f: 
    Y = [map(int, line.split()) for line in f.readlines()[1:]] 

通知的[1:]

+0

@ashwinlyengar,如果我想抓住除第一個和最後一個(每行文本文件的行數不同)的每一行,我該怎麼做? (供將來參考) –

+0

如果你有一個名爲''a''的數組,你只需要''a [1:-1]''。數組索引的python格式是'[start:stop:step]'(全部可選),所以你可以指定從哪裏開始,停止,然後跳過多少個元素(例如''a [:: 2] ''給你''a'''的每個第二個元素)。此外,負索引指定數組後面的元素數。這就是爲什麼''[1:-1]''起作用的原因:它基本上意味着「從第一個元素到第二個到最後一個元素的每個元素」。 –

0

嘗試:

import numpy 

data = numpy.loadtxt('data.txt',skiprows=1) 
+0

在[{here}]處查看更多選項(http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html)。 – Developer

+0

如果我想跳過第一行和第三行,我該怎麼做?謝謝。爲了將來的參考 –

+0

@ har.cruz1972爲了完全的靈活性,你可以使用上面的方法和'slicing'。例如,在上面,您可以忽略任何數量的行。然後,對於其餘的工作,例如跳過第三行等,最好使用「切片」。例如,'data = numpy.vstack(data [:2],data [3:])'。使用'masking'可以實現更大的靈活性。 msk = numpy.ones((data.shape [0],))','msk [2] = 0','data = data [msk]'。以這種方式看到任何複雜性都很容易處理。 – Developer