2015-06-24 26 views
1

我有一個文本文件,我想加載到一個numpy數組與loadtext()。該文件是製表符分隔,有些時候我有最後一個標籤後的值,而不是空:Numpy的loadtext()

Value1\tab\Value2\tab\value3\tab 
Value4\tab\Value5\tab\value6\tab\value7 
Value8\tab\Value9\tab\value10\tab 
Value11\tab\Value12\tab\value13\tab 

numpy的給我「ValueError異常:列數錯誤」與該行。是否有可能直接將這樣的數據結構加載到一個numpy數組中(使用None作爲值),還是必須打開該文件,如果沒有值,則插入一個None並將操縱的文本文件加載到一個numpy數組中?

感謝

+1

不完全是一個答案,但更多的是建議的:你可以加載將數據轉換爲帶有'csv'的2D列表,通過它的行解析,當它太短時追加'None',然後使用構造函數將列表轉換爲'numpy.array'。 –

+0

這是我正在做的,但我希望有一個更簡單的方法。不管怎麼說,還是要謝謝你! – snowflake

回答

1

既不numpy.genfromtxtnumpy.loadtxt可以處理一個文件的奇數列。如果您有權訪問pandas,則可以通過pandas.read_table執行您所需的操作。

import pandas as pd 
df = pd.read_table('myfile.txt',header=None,sep='\t') 

# to get the data in a numpy ndarray: 
myarray = df.values 

默認情況下,缺失值分配NaN,但你可以改變與df.fillna(value)

+0

好的感謝您的解決方法。 – snowflake

0

您可以使用np.genfromtxt

import numpy as np 
my_array = np.genfromtxt("myfile.txt", delimiter="\t")