1

我正在尝试连接 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 类型的对象。有什么我想念的吗?

谢谢

4

2 回答 2

1

虽然我之前对这个问题的评论仍然有效,但我实际上在 Astropy v1.0.2 中修复了这个问题,以便这些方法现在基本上可以工作(https://github.com/astropy/astropy/pull/3283)。要重命名列,它很简单:

hdu.columns[prev_name] = new_name

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

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

于 2015-09-10T22:04:50.103 回答
0

在 4.0.1post1 版本中的解决方案

hdu.columns[prev_name] = new_name

不起作用。它抱怨“ColDefs”不支持项目分配。为了解决这个问题,我们需要直接更改它的名称:

hdu.columns[prev_name].name = new_name
于 2021-05-06T07:43:06.173 回答