百度网站建设平台,微盟微商城官网,海口建站费用,服装官网网站建设如果保存文件需要是“csv”样式的文本#xff0c;则可以使用多个savetxt和loadtxt。关键是要知道这两个都可以以打开的文件作为输入。写作示例#xff1a;In [31]: Anp.arange(3*2*4).reshape(3,2,4)In [32]: A # normal display as 3 blocks of 2d arrayOut[32]:array([[[ 0…如果保存文件需要是“csv”样式的文本则可以使用多个savetxt和loadtxt。关键是要知道这两个都可以以打开的文件作为输入。写作示例In [31]: Anp.arange(3*2*4).reshape(3,2,4)In [32]: A # normal display as 3 blocks of 2d arrayOut[32]:array([[[ 0, 1, 2, 3],[ 4, 5, 6, 7]],[[ 8, 9, 10, 11],[12, 13, 14, 15]],[[16, 17, 18, 19],[20, 21, 22, 23]]])In [36]: for a in A:print a, \n # or iterate on the 1st dimension[[0 1 2 3][4 5 6 7]][[ 8 9 10 11][12 13 14 15]][[16 17 18 19][20 21 22 23]]在这个例子之后我可以迭代文件对每个子数组使用savetxtIn [37]: with open(3dcsv.txt,wb) as f:for a in A:np.savetxt(f, a, fmt%10d)f.write(\n)....:用系统cat(通过ipython)确认文件写入In [38]: cat 3dcsv.txt0 1 2 34 5 6 78 9 10 1112 13 14 1516 17 18 1920 21 22 23对于简单读取loadtxt显然忽略空行返回一个6x 4数组。所以我知道应该是(2,3,4)我可以很容易地重塑结果。In [39]: np.loadtxt(3dcsv.txt)Out[39]:array([[ 0., 1., 2., 3.],[ 4., 5., 6., 7.],[ 8., 9., 10., 11.],[ 12., 13., 14., 15.],[ 16., 17., 18., 19.],[ 20., 21., 22., 23.]])经过一点调试我得到了这个多loadtxt工作。loadtxt(和genfromtxt)使用行列表。In [53]: A1[] # list to collect blocksIn [54]: with open(3dcsv.txt) as f:lines [] # list to collect lineswhile 1:aline f.readline()if aline.strip():lines.append(aline) # nonempty lineelse: # empty lineif len(lines)0: breakA1.append(np.loadtxt(lines, dtypeint))lines []....:In [55]: A1 np.array(A1)In [56]: A1Out[56]:array([[[ 0, 1, 2, 3],[ 4, 5, 6, 7]],[[ 8, 9, 10, 11],[12, 13, 14, 15]],[[16, 17, 18, 19],[20, 21, 22, 23]]])这可能不是save/load中最健壮的一对但它为构建更好的架构提供了框架。但是如果它不需要是文本那么pickle就可以了就像本地的numpy“save/load”一样In [57]: np.save(3dsave.npy,A)In [58]: np.load(3dsave.npy)Out[58]:array([[[ 0, 1, 2, 3],[ 4, 5, 6, 7]],[[ 8, 9, 10, 11],[12, 13, 14, 15]],[[16, 17, 18, 19],[20, 21, 22, 23]]])