0
我想读取从第7行开始的数字行并将数字编译到列表中,直到没有更多数据,然后计算此标准偏差和%rms名单。看起来很简单,但我不断收到错误:Numpy std的计算:TypeError:无法使用弹性类型执行缩减
Traceback (most recent call last):
File "rmscalc.py", line 21, in <module>
std = np.std(values)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/fromnumeric.py", line 2817, in std
keepdims=keepdims)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/_methods.py", line 116, in _std
keepdims=keepdims)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/_methods.py", line 86, in _var
arrmean = um.add.reduce(arr, axis=axis, dtype=dtype, keepdims=True)
TypeError: cannot perform reduce with flexible type
这里是我下面的代码:
import numpy as np
import glob
import os
values = []
line_number = 6
road = '/Users/allisondavis/Documents/HCl'
for pbpfile in glob.glob(os.path.join(road, 'pbpfile*')):
lines = open(pbpfile, 'r').readlines()
while line_number < 400 :
if lines[line_number] == '\n':
break
else:
variables = lines[line_number].split()
values.append(variables)
line_number = line_number + 3
print values
a = np.asarray(values).astype(np.float32)
std = np.std(a)
rms = std * 100
print rms
编辑:它产生的RMS(这是错误的 - 不知道为什么还没有),但下面的错误信息令人困惑:我需要的数量要高(400采摘只是为了确保它会得到整个文件不管是大)
Traceback (most recent call last):
File "rmscalc.py", line 13, in <module>
if lines[line_number] == '\n':
IndexError: list index out of range
你怎么做到这一点?你能提供一些示例代码吗? – alli
我添加了一个例子,如果它对你有帮助,请考虑接受我的答案。 – Priyatham
它确实有帮助,但我遇到了循环播放和获取所有信息的问题 - 它似乎只能从第一行读取,您是否知道如何解决此问题?我将编辑我的问题 – alli