Ich versuche Zeilen von Zahlen ab Zeile 7 zu lesen und die Zahlen in eine Liste zu kompilieren, bis es keine Daten mehr gibt, dann Standardabweichung und% RMS berechnen Liste. Scheint einfach, aber ich halte den Fehler bekommen:Numpy std Berechnung: TypeError: kann nicht mit flexiblen Typ reduzieren
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
Hier ist mein Code unten:
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
Edit: Es erzeugt eine RMS (was falsch ist - nicht sicher, warum noch) nicht, aber die folgende Fehlermeldung ist verwirrend: ich habe die Zählung benötigen (sicherzustellen, nur 400 aufgenommen, um es ganz gleich die gesamte Datei erhalten würde, wie groß) hoch sein
Traceback (most recent call last):
File "rmscalc.py", line 13, in <module>
if lines[line_number] == '\n':
IndexError: list index out of range
Wie machst du das? Können Sie einen Beispielcode bereitstellen? – alli
Ich habe ein Beispiel hinzugefügt. Bitte denken Sie daran, meine Antwort zu akzeptieren, wenn es Ihnen geholfen hat. – Priyatham
es hat geholfen, aber ich habe Probleme mit der Schleife über die Linien und bekommen alle Informationen - es scheint nur aus der ersten Zeile zu lesen, wissen Sie, wie das zu beheben? Ich bearbeite meine Frage – alli