我试图从文本文件中读取数据并取这些数据的均值,但是我得到的错误是无法使用灵活类型执行减少操作。我不知道为什么,有人可以帮忙。这是我的代码。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数据时,此链接告诉我如何忽略底线或如何填充底线,但是这两种方法都会压低平均值。有办法解决这个问题吗?
2 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
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.genfromtxt或np.loadtxt从文本文件加载数组:
a = np.genfromtxt(filename, ...)
慕标琳琳
TA贡献1830条经验 获得超9个赞
有一种方法可以将类似文件的自定义对象np.genfromtxt
传递给。您可以使用类似的方法来处理短行并返回全行。但是,我认为这比您在此处真正想要使用的代码更多。我认为编写一个预处理脚本将您的旧数据文件重写(通过将零添加到丢失的列中)到一个可以被np.genfromtxt读取的脚本中会更容易
添加回答
举报
0/150
提交
取消