私はあなたのエラーを再現することはできません。また、あなたのコードを実行するときに私は空の配列を取得しません。次のコードとその結果を参照してください。私はまだnp.genfromtxt
を使用することをお勧めします。
コード:
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
結果:
>>> 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']
open
であなただけの行を反復処理することができるためだけinpurファイルの最初の行は、あなたのコードを読まれる理由があります一度。もしあなたがそれをしたら、あなたは元に戻ることはできません。それを理解するためには、たとえば@Aaron Hallのアンカーをthis questionにしてください:方法はnext
しかありませんが、ここに戻って行を戻す方法はありません。 a
の値を1
に設定した場合、つまり入力ファイルの最初の行をarray
に追加した後に、すべての行がopen
の1度使用された時点に達しました。これはなぜあなたのコードは最初の行だけを読み取るのですか?array
が空リストであると主張し、なぜ私はapproach3
を提案したのですか?
あなたは 'array'をまったく変更していません... –
' if'ブロックの中にプリントを置くことは、あまりにも実際に実行されているかどうかを見てください。 – khelwood
'array = numpy.genfromtxt(filename、dtype = int)'を使ってそれらの値を変数 'array'に読み込みます。 – Michael