我试图在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类型对象。我有什么遗失的吗?
由于
答案 0 :(得分:1)
虽然我之前对这个问题的评论仍然存在,但实际上我已经在Astropy v1.0.2中对此进行了修正,因此这些方法现在基本上可以正常工作(https://github.com/astropy/astropy/pull/3283)。要重命名列,它就像:
一样简单hdu.columns[prev_name] = new_name
这将在Numpy数组本身重命名该列,并在将表写回FITS时重命名该列。
更改格式并不简单,此时需要创建一个新表。
答案 1 :(得分:0)
在 4.0.1post1 版本中的解决方案
ACCESS_BACKGROUND_LOCATION
不起作用。它抱怨“ColDefs”不支持项目分配。为了解决这个问题,我们需要直接改名:
hdu.columns[prev_name] = new_name