【问题标题】:merging arrays from n file into a new file in python将n文件中的数组合并到python中的新文件中
【发布时间】: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


【解决方案1】:

您好,我能够解决这个问题,问题在于方括号的定位方式。编写代码的正确方法是

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多