ich deine Fehler nicht reproduzieren kann. Außerdem erhalte ich kein leeres Array, wenn Sie Ihren Code ausführen. Siehe den folgenden Code und die Ergebnisse. Ich schlage immer noch vor, np.genfromtxt
zu verwenden, wenn die Eingabedaten so sauber sind wie Ihre.
Code:
import numpy as np
# I have input.txt in same directory as this .py-file
# np.genfromtxt with int and with string
approach1a = np.genfromtxt('input.txt', dtype=int)
approach1b = np.genfromtxt('input.txt', dtype=np.str_)
# list comprehension
approach2 = []
with open('input.txt') as file:
approach2 = [str(line) for line in file]
# like your approach, but without a, b and the if statement
approach3 = []
with open('input.txt') as file:
for line in file:
approach3.append(line)
# your code
inn = open("input.txt", "r")
a = 0
b = 10
array = []
while not a == b:
for i, line in enumerate(inn):
if i == a:
array += str(line)
a+=1
Ergebnisse:
>>> approach1a
array([ 7, 4, 2, 5, 2, 9, 8, 6, 10, 8, 4])
>>> approach1b
array(['7', '4', '2', '5', '2', '9', '8', '6', '10', '8', '4'],
dtype='<U2')
>>> approach2
['7\n', '4\n', '2\n', '5\n', '2\n', '9\n', '8\n', '6\n', '10\n', '8\n', '4']
>>> approach3
['7\n', '4\n', '2\n', '5\n', '2\n', '9\n', '8\n', '6\n', '10\n', '8\n', '4']
>>> array
['7', '\n']
Der Grund, dass nur die erste Zeile der inpur Datei mit Ihrem Code gelesen wird, weil mit open
Sie nur über die Leitungen laufen können einmal. Wenn Sie das getan haben, können Sie nicht zurückgehen. Um das zu verstehen, siehe zum Beispiel @Aaron Hall anwer this question: es gibt nur eine Methode next
, aber es gibt keine Möglichkeit, zurückzugehen (in diesem Fall, um eine Zeile zurück zu gehen). Sie haben den Punkt erreicht, an dem alle Zeilen von open
einmal verwendet wurden, als Sie den Wert a
auf 1
festgelegt haben, d. H. Nachdem Sie die erste Zeile der Eingabedatei zu array
hinzugefügt haben. Aus diesem Grund verstehe ich, dass Ihr Code nur die erste Zeile liest, warum ich Sie nicht reproduzieren kann, Sie haben array
als eine leere Liste und warum schlug ich approach3
vor.
du modifizierst überhaupt nicht 'array' ... –
Wie wäre es mit einem Ausdruck in deinem' if' Block zu sehen, ob er tatsächlich ausgeführt wird? – khelwood
Verwenden Sie einfach 'array = numpy.genfromtxt (Dateiname, dtype = int)' 'um diese Werte in die Variable' array' einzulesen. – Michael