2016-07-28 14 views
0

フォルダに複数のテキストファイルがあり、すべてが3つのスペースで区切られた数値形式のデータがあります。改行はありません。私は数字を取り、数が少ない配列でそれらを並べて、それを240×240の配列になるように作り直したい。 (私はそうするために各ファイルに正しい数のデータポイントを持っています。)その後、配列をグラフィカルに表示し、次のファイルについても同様にします。行を分割してnumpy配列に数値を追加する

"'unicodeescape' codec can't decode bytes in position 10-11: malformed \N character escape." 

私のコード今のところです:しかし、私の試みは言う私のエラーを与え続ける

import numpy as np 
import matplotlib.pyplot as plt 
a = np.array([]) 
import glob, os 
os.chdir("/mydirectory") 
for file in glob.glob("*.txt"): 
    for line in file: 
     numbers = line.split(' ') 
     for number in numbers: 
      a.np.append([number]) 
    b = a.reshape(240,240) 
    plt.imshow(b) 
    a = np.array([]) 
+0

は、あなたがnumpy.loadtxtで見たことがありますか? –

答えて

2

それはファイルのいずれかを読んで番号のように聞こえます。最初に行うことをお勧めします。

lines = file.readlines() 

この行が正しく表示されていることを確認してください。 strip

In [244]: [int(x) for x in '121 342 123\n'.strip().split(' ')] 
Out[244]: [121, 342, 123] 

しかし、このループ構造も悪いです。それはnp.append

a = np.array([]) 
.... 
for number in numbers: 
    a.np.append([number]) 

In [245]: a=np.array([]) 
In [246]: a.np.append(['123']) 
... 
AttributeError: 'numpy.ndarray' object has no attribute 'np' 

In [247]: a.append(['123']) 
... 
AttributeError: 'numpy.ndarray' object has no attribute 'append' 

In [248]: np.append(a,['123']) 
Out[248]: 
array(['123'], 
     dtype='<U32') 
In [249]: a 
Out[249]: array([], dtype=float64) 

np.appendの誤用は、新しい配列を返します。それは変更されませんa inplace。あなたは、リスト内の値(またはリストのリスト)を収集し、または非常に少なくともnp.arrayに整数のリストを渡したい

In [250]: np.array([int(x) for x in '121 342 123\n'.strip().split(' ')]) 
Out[250]: array([121, 342, 123]) 
+0

ありがとうございます。これは非常に便利でした – Evan

関連する問題