无法将制表符分隔文件读入numpy 2-D数组

Abh*_*bhi 6 numpy python-2.7 genfromtxt

我是nympy的新手,我正在尝试使用以下代码将tab(\ t)分隔的文本文件读入numpy数组矩阵:

train_data = np.genfromtxt('training.txt', dtype=None, delimiter='\t')
Run Code Online (Sandbox Code Playgroud)

文件内容:

38   Private    215646   HS-grad    9    Divorced    Handlers-cleaners   Not-in-family   White   Male   0   0   40   United-States   <=50K
53   Private    234721   11th   7    Married-civ-spouse  Handlers-cleaners   Husband     Black   Male   0   0   40   United-States   <=50K
30   State-gov  141297   Bachelors  13   Married-civ-spouse  Prof-specialty  Husband     Asian-Pac-Islander  Male   0   0   40   India   >50K
Run Code Online (Sandbox Code Playgroud)

我期待的是形状的二维阵列矩阵(3,15)

但是我的上面的代码我只得到一个单行数组(3,)

我不确定为什么每行的15个字段都没有分配一列.

我也尝试使用numpy的loadtxt(),但是它无法处理我的数据的类型转换,即使我给了dtype = None,它试图将字符串转换为默认浮点类型并且失败了.

试过的代码:

train_data = np.loadtxt('try.txt', dtype=None, delimiter='\t')

Error:
ValueError: could not convert string to float: State-gov
Run Code Online (Sandbox Code Playgroud)

有什么指针吗?

谢谢

DrR*_*nja 1

我不相信 Numpy 数组可以处理单个数组中的不同数据类型。可以做的是将整个数组作为字符串加载,然后根据需要将必要的列转换为数字

# Load data as strings
train_data = np.loadtxt('try.txt', dtype=np.str, delimiter='\t')

# Convert numeric strings into integers
first_col = train_data[:,0].astype(np.int)
third_col = train_data[:,2].astype(np.int)
Run Code Online (Sandbox Code Playgroud)