2016-07-28 65 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