2016-07-28 63 views
0

我有一個文件夾中的幾個文本文件,所有的數據形式的數字,每個分隔3個空格。沒有換行符。我想獲取數字,將它們按順序排列成一個numpy數組,然後將其重新排列成一個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

你想收集名單(名單或清單)值,或者至少是通過一個整數列表,以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