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

发布于 2021-01-29 16:56:45

我正在尝试放置许多numpy文件以获得一个大numpy文件,我尝试遵循这两个链接将多个numpy文件附加到python中的一个大numpy文件中,并且
Python以给定的顺序将多个文件追加到一个大文件中, 这就是我所做的:

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 /不会按照文件夹的顺序打印’test’文件夹中的numpy文件(trace0,trace1,trace2,…)

2 /仅保存文件中的最后一条迹线,这意味着在打印或绘制OutFileTraces.npy时,我发现只有一条迹线,这是第一条迹线。

因此,我需要更正我的代码,因为实际上我被阻止了。如果您能帮助我,我将不胜感激。

提前致谢。

关注者
0
被浏览
450
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    正如在

    在附加模式下加载使用numpy.save保存的数组

    可以多次保存到打开的文件,也可以多次加载。这没有记录,可能不是首选,但是可以。 savez存档是保存多个阵列的首选方法。

    这是一个玩具示例:

    In [777]: with open('multisave.npy','wb') as f:
         ...:     arr = np.arange(10)
         ...:     np.save(f, arr)
         ...:     arr = np.arange(20)
         ...:     np.save(f, arr)
         ...:     arr = np.ones((3,4))
         ...:     np.save(f, arr)
         ...:     
    In [778]: ll multisave.npy
    -rw-rw-r-- 1 paul 456 Feb 13 08:38 multisave.npy
    In [779]: with open('multisave.npy','rb') as f:
         ...:     arr = np.load(f)
         ...:     print(arr)
         ...:     print(np.load(f))
         ...:     print(np.load(f))
         ...:     
    [0 1 2 3 4 5 6 7 8 9]
    [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]
    [[ 1.  1.  1.  1.]
     [ 1.  1.  1.  1.]
     [ 1.  1.  1.  1.]]
    

    这是保存相同形状的数组列表的简单示例

    In [780]: traces = [np.arange(10),np.arange(10,20),np.arange(100,110)]
    In [781]: traces
    Out[781]: 
    [array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
     array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19]),
     array([100, 101, 102, 103, 104, 105, 106, 107, 108, 109])]
    In [782]: arr = np.array(traces)
    In [783]: arr
    Out[783]: 
    array([[  0,   1,   2,   3,   4,   5,   6,   7,   8,   9],
           [ 10,  11,  12,  13,  14,  15,  16,  17,  18,  19],
           [100, 101, 102, 103, 104, 105, 106, 107, 108, 109]])
    
    In [785]: np.save('mult1.npy', arr)
    
    In [786]: data = np.load('mult1.npy')
    In [787]: data
    Out[787]: 
    array([[  0,   1,   2,   3,   4,   5,   6,   7,   8,   9],
           [ 10,  11,  12,  13,  14,  15,  16,  17,  18,  19],
           [100, 101, 102, 103, 104, 105, 106, 107, 108, 109]])
    In [788]: list(data)
    Out[788]: 
    [array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
     array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19]),
     array([100, 101, 102, 103, 104, 105, 106, 107, 108, 109])]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看