Python numpy loadtxt:将空文件读入具有特定列数的数组

时间:2017-06-14 16:33:10

标签: python numpy multidimensional-array file-io

numpy.loadtxt(fname, ..)是空文件时,有没有办法让(0, ncol)创建一个形状ncol数组,其中fname是我指定的整数?< / p>

例如,如果我运行以下脚本,

#!/usr/bin/python3

import numpy as np

aa = np.loadtxt('fanmab.dat', ndmin=2)
print('aa.shape=',  aa.shape)

ae = np.loadtxt('fempty.dat', ndmin=2)
#ae = np.loadtxt('fempty.dat', ndmin=2, usecols=(0,1,2,3))
print('ae.shape=',  ae.shape)

包含文件fanmab.dat

# This is fanmab.dat
0.1234   0.56    0.78    0.90
1.1234   1.56    1.78    1.90
2.1234   2.56    2.78    2.90

fempty.dat

# This is an empty file

我在python中看到以下stdout

$ ./main.py 
aa.shape= (3, 4)
/usr/lib/python3/dist-packages/numpy/lib/npyio.py:816: UserWarning: loadtxt: Empty input file: "fempty.dat"
  warnings.warn('loadtxt: Empty input file: "%s"' % fname)
ae.shape= (0, 1)

当没有可读入的行而1时,第二维的长度似乎会自动设置为ndmin=2。设置usecols似乎没有帮助。

我是否需要执行以下操作?

if ae.shape[0]==0:
    ae.reshape((0,ncol))

1 个答案:

答案 0 :(得分:1)

声明

ae = np.loadtxt(..., ndmin=2).reshape(-1, 4)

适用于这两种情况。 -1告诉NumPy根据扁平输入数组的大小猜测行数。