我有多达8个单独的Python进程在共享文件夹中创建临时文件.然后我想控制进程将所有临时文件按特定顺序附加到一个大文件中.在os不可知的shell级别上执行此操作的最快方法是什么?
我按照这个链接如何将许多 numpy 文件附加到 python 中的一个 numpy 文件中,以将我所有的 numpy 文件放在一个文件中。现在,我需要绘制包含许多数组的文件,每个数组都包含一些浮点数:这是我将数组附加到一个大数组中的最终代码:
import matplotlib.pyplot as plt
import numpy as np
import glob
import os, sys
fpath ="/home/user/Desktop/OutFileTraces.npy"
npyfilespath="/home/user/Desktop/test"
os.chdir(npyfilespath)
npfiles= glob.glob("*.npy")
npfiles.sort()
all_arrays = []
with open(fpath,'ab') as f_handle:
for npfile in npfiles:
#Find the path of the file and Load file
all_arrays.append(np.load(os.path.join(npyfilespath, npfile)))
np.save(f_handle, all_arrays)
data = np.load(fpath)
print data
Run Code Online (Sandbox Code Playgroud)
这段代码给了我这样的结果:
[[[[-0.00824758 -0.0081808 -0.00811402 ..., -0.0077236 -0.00765425
-0.00762086]]]
[[[-0.00141527 -0.00160791 -0.00176716 ..., -0.00821419 -0.00822446
-0.0082296 ]]]
[[[ 0.01028957 0.01005326 0.0098298 …Run Code Online (Sandbox Code Playgroud) 我已经尝试过 Hpaulji 概述的这种方法,但它似乎不起作用:
如何在python中将多个numpy文件附加到一个numpy文件中
基本上,我正在迭代生成器,对数组进行一些更改,然后尝试保存每次迭代的数组。
我的示例代码如下所示:
filename = 'testing.npy'
with open(filename, 'wb') as f:
for x, _ in train_generator:
prediction = base_model.predict(x)
print(prediction[0,0,0,0:5])
np.save(filename, prediction)
current_iteration += 1
if current_iteration == 5:
break
Run Code Online (Sandbox Code Playgroud)
在这里,我要进行 5 次迭代,因此我希望保存5 个不同的数组。
我打印出了每个数组的一部分,用于调试目的:
[ 0. 0. 0. 0. 0.]
[ 0. 3.37349415 0. 0. 1.62561738]
[ 0. 20.28489304 0. 0. 0. ]
[ 0. 0. 0. 0. 0.]
[ 0. 21.98013496 0. 0. 0. ]
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试加载数组时,如此处所述多次加载数组, 如何将许多 numpy 文件添加到 python 中的一个 numpy 文件中 …
我在追加模式下使用numpy.save()保存数组:
f = open("try.npy", 'ab')
sp.save(f,[1, 2, 3, 4, 5])
sp.save(f,[6, 7, 8, 9, 10])
f.close()
Run Code Online (Sandbox Code Playgroud)
我可以在LIFO模式下加载数据吗?也就是说,如果我现在要加载6-10阵列,我是否需要加载两次(使用b):
f = open("try.npy", 'r')
a = sp.load(f)
b = sp.load(f)
f.close()
Run Code Online (Sandbox Code Playgroud)
或者我可以直接加载第二个附加保存?