我正在尝试将许多numpy文件放到一个大的numpy文件中,我尝试按照这两个链接Append multiple numpy files to one big numpy file in python和Python 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 /不打印文件夹'test'中的numpy文件,而不是他们的订单(trace0,trace1,trace2,...)
2 /只保存文件中的最后一个跟踪,我的意思是当打印或绘制OutFileTraces.npy时,我发现只有一个跟踪,它是第一个跟踪。
所以我需要更正我的代码,因为我被阻止了。如果你能帮助我,我将非常感激。
提前致谢。
答案 0 :(得分:3)
Glob生成无序列表。您需要使用额外的行显式排序,因为排序过程就位并且不返回列表。
npfiles = glob.glob("*.npy")
npfiles.sort()
for npfile in npfiles:
...
NumPy文件包含单个数组。如果您想在一个文件中存储多个数组,可以查看.npz
np.savez
(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)
个此类数组。带
OnRowCommand
将生成一个形状为<asp:GridView ID="mygridview" runat="server" OnRowCommand="mygridview_OnRowCommand">
答案 1 :(得分:0)
如
所述loading arrays saved using numpy.save in append mode
可以多次保存到打开的文件,并且可以多次加载。这没有记录,可能不是首选,但它的工作原理。 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])]
这是一个保存相同形状的数组列表的简单示例
minimum sdk level