使用numpy.genfromtxt读取单行CSV

时间:2014-07-24 21:00:42

标签: python csv numpy

我使用以下脚本使用numpy从标准输入中读取文件。

#!/usr/bin/env python
import numpy as np
import sys

data = np.genfromtxt(sys.stdin, delimiter=",")
print data.shape
print data

这适用于包含多行的文件。但无法为此文件工作:

1,2,2,2,2,2,1,1,1

我正在运行它

$ cat input-file.txt | ./test.py

输出如下:

(9,)
[ 1.  2.  2.  2.  2.  2.  1.  1.  1.]

它应该有形状(,9)。有谁知道如何解决它?

2 个答案:

答案 0 :(得分:6)

将其强制为二维数组:

data = np.genfromtxt(sys.stdin, delimiter=",")
if len(data.shape) == 1:
    data = np.array([data])

答案 1 :(得分:0)

您可以使用适用于所有情况的csv:

import csv

reader=csv.reader(sys.stdin)
for row in reader:
    print row

来自Bash的测试:

$ printf '1,2,3,4' | ./test.py
['1', '2', '3', '4']
$ printf '1,2,3,4\n5,6,7,8' | ./test.py
['1', '2', '3', '4']
['5', '6', '7', '8']