2

我正在尝试从文本文件中读取数据并取该数据的平均值,但我收到错误无法使用灵活类型执行 reduce。我不知道为什么,有人可以帮忙。这是我的代码。

right=open('01phi.txt','r').readlines()  
right=str(right) 
a=np.asarray(right)
b=np.mean(a)
print b

编辑:我现在正在使用这条线 right=np.genfromtxt('01phi.txt') ,但它会产生这个错误Line #10 (got 3 columns instead of 7),因为数组中的这条线没有那么大。使用 genfromtxt 在 numpy 中导入具有缺失值的 csv 数据,此链接告诉我如何忽略底线或如何填充它,但这两种方法都会影响平均值。有没有办法解决这个问题?

4

1 回答 1

4

right是一个字符串。np.asarray(some_string)返回具有字符串 dtype 的数组。NumPy 的np.mean函数在传递字符串 dtype 数组时引发 TypeError。

In [29]: np.asarray('1 2 3')
Out[29]: 
array('1 2 3', 
      dtype='|S5')
In [31]: np.mean(a)
TypeError: cannot perform reduce with flexible type

相反,使用np.genfromtxtnp.loadtxt从文本文件加载数组:

a = np.genfromtxt(filename, ...)
于 2013-06-24T14:42:24.250 回答