gpt4 book ai didi

python - 如何在python中将多个numpy文件附加到一个numpy文件中

转载 作者:太空宇宙 更新时间:2023-11-04 00:40:11 26 4
gpt4 key购买 nike

我试图将许多 numpy 文件放入一个大的 numpy 文件,我尝试点击这两个链接 Append multiple numpy files to one big numpy file in pythonPython append multiple files in given order to one big file这就是我所做的:

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)
with open(fpath,'wb') as f_handle:
for npfile in glob.glob("*.npy"):
# Find the path of the file
filepath = os.path.join(npyfilespath, npfile)
print filepath
# Load file
dataArray= np.load(filepath)
print dataArray
np.save(f_handle,dataArray)
dataArray= np.load(fpath)
print dataArray

我得到的结果示例:

/home/user/Desktop/Trace=96
[[ 0.01518007 0.01499514 0.01479736 ..., -0.00392216 -0.0039761
-0.00402747]]
[[-0.00824758 -0.0081808 -0.00811402 ..., -0.0077236 -0.00765425
-0.00762086]]
/home/user/Desktop/Trace=97
[[ 0.00614908 0.00581004 0.00549154 ..., -0.00814741 -0.00813457
-0.00809347]]
[[-0.00824758 -0.0081808 -0.00811402 ..., -0.0077236 -0.00765425
-0.00762086]]
/home/user/Desktop/Trace=98
[[-0.00291786 -0.00309509 -0.00329287 ..., -0.00809861 -0.00797789
-0.00784175]]
[[-0.00824758 -0.0081808 -0.00811402 ..., -0.0077236 -0.00765425
-0.00762086]]
/home/user/Desktop/Trace=99
[[-0.00379887 -0.00410453 -0.00438963 ..., -0.03497837 -0.0353842
-0.03575151]]
[[-0.00824758 -0.0081808 -0.00811402 ..., -0.0077236 -0.00765425
-0.00762086]

这条线代表第一条轨迹:

[[-0.00824758 -0.0081808  -0.00811402 ..., -0.0077236  -0.00765425
-0.00762086]]

一直重复。

我两天前问了第二个问题,一开始我认为我有最好的答案,但在尝试建模打印并抽取最终文件“OutFileTraces.npy”后,我发现我的代码:

1/不按照顺序(trace0、trace1、trace2、...)打印文件夹“test”中的 numpy 文件

2/只保存文件中的最后一条轨迹,我的意思是当打印或绘制 OutFileTraces.npy 时,我只找到一条轨迹,它是第一条。

所以我需要更正我的代码,因为我确实被阻止了。如果你能帮助我,我将不胜感激。

提前致谢。

最佳答案

  1. Glob 生成无序列表。您需要使用额外的行进行显式排序,因为排序过程已就位并且不会返回列表。

    npfiles = glob.glob("*.npy")
    npfiles.sort()
    for npfile in npfiles:
    ...
  2. NumPy 文件包含单个数组。如果您想将多个数组存储在一个文件中,您可以查看带有 np.savez https://docs.scipy.org/doc/numpy/reference/generated/numpy.savez.html#numpy.savez.npz 文件。我还没有看到它被广泛使用,所以您可能希望认真考虑替代方案。

    1. 如果你的数组都是相同的形状并存储相关数据,你可以制作一个更大的数组。假设当前形状是 (N_1, N_2) 并且您有 N_0 这样的数组。一个循环

      all_arrays = []
      for npfile in npfiles:
      all_arrays.append(np.load(os.path.join(npyfilespath, npfile)))
      all_arrays = np.array(all_arrays)
      np.save(f_handle, all_array)

      将生成一个具有单个形状数组的文件 (N_0, N_1, N_2)

    2. 如果您需要按名称访问数组,HDF5 文件非常适合。参见 http://www.h5py.org/ (完整的介绍对于 SO 回复来说太多了,请参阅快速入门指南 http://docs.h5py.org/en/latest/quick.html )

关于python - 如何在python中将多个numpy文件附加到一个numpy文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42204368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com