我正在使用python,我有一个名为“索引”的文件 具有以下结构:
class1 fileNameX
class2 fileNameY
class3 fileNameZ
是与文件名关联的类的集合。
fileNameX是一个有2个矩阵的matlab文件。我可以提取数据并直接从fileNameX连接它,如下所示:
mat = scipy.io.loadmat('filenameX')
var1 = mat['dataL']
var2 = mat['dataR']
var3=np.concatenate((var1, var2), axis=0)
var4 = var3.reshape(1,387200)
我的问题是如何自动获取索引文件中每个文件名的var4中的连接格式。
我想要的输出是包含类的向量“A”,我自己也可以这样做,问题是在每个文件名的var4形式上得到向量“B”。
谢谢你,任何帮助都很感激。
编辑:类是数字(1-100),我有索引文件指向的许多文件。有没有办法自动加载所有这些不是一个接一个? 最后,矢量A和矩阵B需要是numpy数组。
答案 0 :(得分:0)
A = []
B = []
with open('indexes') as infile:
for line in infile:
line = line.strip()
if not line: continue
className, fname = line.split(None,1)
A.append(className)
mat = scipy.io.loadmat('filenameX')
var = np.concatenate((mat['dataL'], mat['dataR']), axis=0).reshape(1,387200)
B.append(var)
现在,A[i]
包含i
中indexes
行的类名,而B[i]
包含matlab矩阵(代码中为var4
)在i
indexes
行中指明的文件名
答案 1 :(得分:0)
我使用的正则表达式并不是最严格的(你可以用#34替换第一个w +;类#34;但是为了灵活性我把它留作任何字母序列。
import re
#you would load this with open(indexfilename,"rt").read()
index_file_content = "(class 1, fileNameX)\n(class 2, fileNameY)\n(class 3, fileNameZ)"
files = re.findall("\(\w+\s+\d+,\s+(\w+)\)", filecontent)
# files == ['fileNameX', 'fileNameY', 'fileNameZ']