将文件排列到numpy数组中



我在一个目录中有许多具有数字扩展名的文本文件(例如:signal_data1.9995100000000001,signal_data1.99961等)

文件的内容如下

signal_data1.9995100000000001

-1.710951390504200198e+00
5.720409824754981720e-01
2.730176313110273423e+00

signal_data1.99961

-6.710951390504200198e+01
2.720409824754981720e-01
6.730176313110273423e+05

我只是想在将数字扩展名排序为

之后,将上述文件安排到单个.npy文件中。
array([[-1.710951390504200198e+00,5.720409824754981720e-01,2.730176313110273423e+00],
[-6.710951390504200198e+01,2.720409824754981720e-01,6.730176313110273423e+05]])

所以同样的过程,我想为一个目录的许多文件实现。

我尝试了如下循环:

import numpy as np
import glob
arr = [ ]
for file in glob.glob(./signal_*):
arr.vstack('data', file)

然而,它并没有给我想要的描述上面。所以我需要帮助。提前谢谢。

使用中间字典收集数据,在创建最终数组之前按key(数字扩展)排序:

import pathlib
import numpy as np
import re
data = {}
for file in pathlib.Path().glob('signal_data*'):
# get the numeric extension with a regex
key = re.search(r'd+.d+', file.name).group(0)
data[key] = np.loadtxt(file)

arr = np.array([a[1] for a in sorted(data.items(), key=lambda x: x[0])])

输出:

>>> arr
array([[-1.71095139e+00,  5.72040982e-01,  2.73017631e+00],
[-6.71095139e+01,  2.72040982e-01,  6.73017631e+05]])

请查看我的代码中的错误注释

import numpy as np
import glob
for i, file in enumerate(glob.glob("./signal_*")):
if(i==0):
arr = np.genfromtxt(file, delimiter=',')
else:
new_arr = np.genfromtxt(file, delimiter=',')
arr = np.vstack((arr, new_arr))
arr    

输出:

array([[-1.71095139,  0.57204098,  2.73017631],
[-1.71095139,  0.57204098,  2.73017631]])

您也可以读取pandas.read_csv()来读取您的数组。我认为它应该更快,但我没有在上面的代码中使用它,以防你没有它。

最新更新