我正在尝试连接pyfits中的文件。因为输入操作不正确,所以输入文件之间的列名之一和列格式之一不相同,因此我无法使用np.concatenate串联ndarray。

我想更改列名(巧妙的方法)。我在pyfits文档中找到了pyfits.Coldefs.change_name函数(http://pythonhosted.org/pyfits/api_docs/api_tables.html#coldefs),所以这是我现在正在做的事情:


  hdu = pyfits.open(myfile,memmap = True)[1]
  new_columns = pyfits.ColDefs(hdu.columns).change_name(prev_name,new_name)


我也尝试过:


  hdu = pyfits.open(myfile,memmap = True)[1]
  new_columns = pyfits.ColDefs(hdu.columns).change_attrib(prev_name,'names',new_name)


这将返回None类型的对象。我有什么想念的吗?

谢谢

最佳答案

尽管我之前对该问题的评论仍然存在,但实际上我已在Astropy v1.0.2中修复了此问题,以便这些方法现在基本上可以使用(https://github.com/astropy/astropy/pull/3283)。要重命名列,方法很简单:

hdu.columns[prev_name] = new_name


这将在Numpy数组本身中以及在将表写回FITS时重命名该列。

更改格式并不那么简单,目前需要创建一个新表。

关于python - Pyfits:更改列名称/格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27796092/

10-10 21:45