如何提取另一个文件指向的文件的数据
How to extract data of a file that is pointed by another file
我正在使用 python 并且我有一个名为 "indexes" 的文件
具有以下结构:
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数组。
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]
包含 indexes
中第 i
行的 class 名称,而 B[i]
包含 matlab 矩阵(var4
在您的代码中)indexes
中第 i
行指示的文件名
我使用的正则表达式不是最严格的(您可以将第一个 w+ 替换为 "class",但为了灵活起见,我将其保留为任意字母序列。
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']
我正在使用 python 并且我有一个名为 "indexes" 的文件 具有以下结构:
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数组。
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]
包含 indexes
中第 i
行的 class 名称,而 B[i]
包含 matlab 矩阵(var4
在您的代码中)indexes
i
行指示的文件名
我使用的正则表达式不是最严格的(您可以将第一个 w+ 替换为 "class",但为了灵活起见,我将其保留为任意字母序列。
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']