объединение массивов из n файлов в новый файл в python - PullRequest
0 голосов
/ 29 октября 2019

У меня есть три файла, каждый из которых содержит столбцы, представляющие собой смесь целых чисел и чисел, например, первая строка каждого из файлов:

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 содержит только одно значение. Я был бы очень признателен за некоторые концептуальные разъяснения о том, что происходит с моим кодом.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 29 октября 2019

Привет, я смог решить эту проблему, проблема была в том, как были расположены квадратные скобки. Правильный способ написания кода был

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)
...