【发布时间】:2019-10-28 23:25:04
【问题描述】:
我有三个文件,每个文件都包含混合了整数和浮点数的列,例如每个文件的第一行是:
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 只包含一个值。对于我的代码出了什么问题,我真的很感激一些概念上的澄清。
感谢您的帮助。
【问题讨论】:
-
首先,
tbl_out看起来对吗?您在csv文件中看到了什么值?和数组有关系吗?tbl_out的shape和dtype是什么? -
不,它只保存行中第一个值 (CCC) 的一个值。形状为 1,1,dtype 为浮点数
-
如果合并的数组一开始就不正确,你就不能写出正确的
csv。您是否尝试过更简单的合并?
标签: python python-3.x numpy array-merge