在什么情况下np.genfromtxt会读取一个空数组

时间:2020-06-30 03:02:28

标签: numpy numpy-ndarray

尝试使用np.genfromtxt读取.Data文件

a = np.genfromtxt("u.data", dtype = [int, int, int, int], delimiter = '\t')

输出是一个numpy void数组。但是,如果我未指定数据类型,则输出为普通数组。我想知道出了什么问题。我还应该提到,如果我未指定数据类型,那么numpy会将所有数据自动视为浮点数。

1 个答案:

答案 0 :(得分:1)

加载简单csv的各种方法

In [148]: txt = """1,2,3 
     ...: 4,5,6"""              

默认浮点数:

In [149]: np.genfromtxt(txt.splitlines(), delimiter=',')                                
Out[149]: 
array([[1., 2., 3.],
       [4., 5., 6.]])

multiple int dtype-生成结构化数组(请阅读文档):

In [150]: np.genfromtxt(txt.splitlines(), delimiter=',',dtype=[int,int,int])            
Out[150]: 
array([(1, 2, 3), (4, 5, 6)],
      dtype=[('f0', '<i8'), ('f1', '<i8'), ('f2', '<i8')])

混合使用dtypes(更常见的情况):

In [152]: np.genfromtxt(txt.splitlines(), delimiter=',',dtype=[int,float,'U10'])        
Out[152]: 
array([(1, 2., '3'), (4, 5., '6')],
      dtype=[('f0', '<i8'), ('f1', '<f8'), ('f2', '<U10')])

所有整数-类似于浮点格式的2d数组:

In [153]: np.genfromtxt(txt.splitlines(), delimiter=',',dtype=int)                      
Out[153]: 
array([[1, 2, 3],
       [4, 5, 6]])

genfromtxt文档有点长,但是值得完整阅读!