每次实验我提取多达2500帧文件(数量不一定相同),目前我的过程是手动将帧总数除以3,分成三个子集文件夹,因为文件太大,无法将所有文件转换为.mat文件。
一旦文件被分为三个子集(“Subset1,Subset2,Subset3”),我运行我的代码转换和重命名每个文件夹。
from scipy.io import savemat
import numpy as np
import os
arrays = []
directory = r"F:\...\Experiment 24\Imaging\Subset3" # **something here that will look at the while directory and create a different file for each subset folder**
sorted(os.listdir(directory))
for filename in sorted(os.listdir(directory)):
f = os.path.join(directory, filename)
arrays.append(np.load(f))
data = np.array(arrays)
data = data.astype('uint16')
data = np.moveaxis(data, [0, 1, 2], [2, 1, 0])
savemat('24_subset3.mat', {'data': data})
如何自动将帧文件分类到三个单独的子集文件夹中并进行转换?
2条答案
按热度按时间qxsslcnc1#
从文件名创建子集并将其复制到新的子集目录:
注:将跳过任何无法分配到相等子集中的额外文件。
at0kjp5o2#
如果您的目标只是创建三个.mat文件,则根本不需要创建子文件夹和移动文件;你可以在原处迭代它们的子集,你可以手动计算划分子集的索引,但是
more_itertools.divide
是方便和可读的。另外,
pathlib
通常是一种更方便的操作路径和文件名的方式,不用再担心os.path.join
了!Path.iterdir
或Path.glob
生成的路径知道它们的位置,并且不需要与其父路径重新组合。