0

我有一个标题包含“#”的文件,然后是逗号分隔的数据。IE

#blah
#blah
#blah 
1, 2, 3, 4, 5, 6
7, 8, 9,10,11,12
...

我希望能够跳过 # 并将数据转换为数组(列上的直方图)。这读进去了。

filename = 'input.txt'
listin = []
for line in open(filename,'r'):
    li=line.strip()
    if not li.startswith("#"):
        line = line.partition('#')[0]
        #line = line.rstrip()
        listin.append(line.split(',')) 

data = numpy.asarray(listin)
SubData=data[:,0]

hist,nbins = np.histogram(SubData)

Error:
TypeError: cannot perform reduce with flexible type
4

2 回答 2

1

您需要将数据转换为数字类型。您的数组包含字符串。

listin.append([int(token) for token in line.split(',')])

此外,您需要删除每一行以删除换行符。

于 2013-02-03T20:04:28.427 回答
0

您还可以使用 numpy loadtxt 之类的

from numpy import loadtxt
data = loadtxt("input.txt", comments="#", delimiter=",", unpack=True)

返回列中的数据:

array([[  1.,   7.],
   [  2.,   8.],
   [  3.,   9.],
   [  4.,  10.],
   [  5.,  11.],
   [  6.,  12.]])

用于unpack=False按行加载文件。

于 2013-02-04T10:38:49.780 回答