genfromtxt dtype =没有得到2d数组

时间:2014-09-12 18:50:55

标签: python numpy io genfromtxt

我使用此行读取文件

data_train = np.genfromtxt(filename, delimiter=' ', autostrip=True, dtype=float, missing_values="", filling_values='0')

由于列的值可能不共享相同的类型,因此我获得了一维数组。如果我使用dtype=None),则相同。但是,值可以是整数,浮点数或缺失值。

我可以修复此问题并获得2d阵列吗?

例如:

1, 2, 3, 4, 3.3, , 2.2, 1  
1.1, 2.2, 4, , , , ,

1 个答案:

答案 0 :(得分:2)

您可以使用:

np.nan_to_num(np.genfromtxt('test.txt', delimiter=','))

其中np.nan_to_num()会将nan条目转换为0缺少数据的位置,为您的示例获取:

array([[ 1. ,  2. ,  3. ,  4. ,  3.3,  0. ,  2.2,  1. ],
       [ 1.1,  2.2,  4. ,  0. ,  0. ,  0. ,  0. ,  0. ]])

编辑: 正如@unutbu,@ Warren Weckesser以及下面的讨论所阐明的那样,根据您的系统,你可以简单地做(对我来说,在Windows 7 64位,Python 2.7.8 64位和NumPy 1.9.0 downloaded here它没有'工作):

np.genfromtxt('test.txt', filling_values=0, delimiter=',')