将数组从n个文件合并到python中的新文件中

问题描述 投票:0回答:1

我有三个文件,每个文件包含由整数和浮点数组成的列,例如,每个文件的第一行是:

file1

1.0000,0,0,1,1,0,0,0,0,0,0.0000,0.0000,0.0000,0,0,0,8.7129,-102.3384,142.2611,0
file2
1640 3110 1780
file3
12.97 10 0 1 1 1 1 1 1 0 2959.933838 1829.955933 945.020020 240 90 -285 0.419335 0.726310 0.544639 0.272320 0.471671 -0.838671 -0.866025 0.500000 0.000000 1

我现在想创建一个新文件,合并三个字段中每个字段的特定字段,为此我编写了以下程序

import numpy as np
import numpy.lib.recfunctions as rfn

tbl1 = np.genfromtxt('file1', delimiter=",", dtype=None,\
                     names=['CCC','reserved','reserved','pIndex','wedgeWt',\
                            'NA','NA','NA','NA','NA',\
                            'xOffset','yOffset','zOffset',\
                            'NA','NA','reserved',\
                            'phi','psi','theta','reserved'])
tbl2 = np.genfromtxt('file2', delimiter=" ", dtype=None, names=['x','y','z'])
tbl3 = np.genfromtxt('file3', delimiter=" ",\
                     names=['CCC','Bin','NA','pIDX','NA','NA','NA','NA','NA','NA',\
                            'X','Y','Z','phi','theta','psi',\
                            'r11','r21','r31','r12','r22','r32','r13','r23','r33','classIDx'])
tbl_out=rfn.merge_arrays([tbl1['CCC'],\
                         [tbl3['Bin'],['NA']],\
                         [tbl1['pIndex']],\
                         [tbl3['NA'],['NA'],['NA'],['NA'],['NA'],['NA']],\
                         [tbl2['x'],['y'],['z']],\
                         [tbl1['phi'],['theta'],['psi']],\
                         [tbl3['r11'],['r21'],['r31'],['r12'],['r22'],['r32'],['r13'],['r23'],['r33'],['classIDx']])
np.savetxt('outfile.csv',tbl_out,delimiter=" ")

保存后,outfile.csv仅包含一个值。我真的很希望在概念上澄清我的代码出了什么问题。

谢谢您的协助。

python python-3.x numpy array-merge
1个回答
0
投票

嗨,我能够解决这个问题,问题在于方括号的放置方式。编写代码的正确方法是

tbl_out=rfn.merge_arrays([tbl1[['CCC']],tbl3[['Bin','NA8']],\
                         tbl1[['pIndex']],\
                         tbl3[['NA9','NA10','NA11','NA12','NA13','NA14']],\
                         tbl2[['x','y','z']],\
                         tbl1[['phi','theta','psi']],\
                         tbl3[['r11','r21','r31','r12','r22','r32','r13','r23','r33']],\
                         tbl3[['classIDx']]], flatten=True, usemask=False)
© www.soinside.com 2019 - 2024. All rights reserved.