问题标签 [pyfits]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 使用 pyfits 一次读取 FITS 二进制表一行
我有一个包含二进制表的 60GB FITS 文件。我想一次读取(并处理)该表一行/条目/行/块*。
(*我不确定正确的命名法)
我正在使用 pyfits,我想做的归结为:
该变量entry
具有类型<class 'pyfits.fitsrec.FITS_record'>
,并且长度等于二进制表中的列数。然而,似乎发生的是整个二进制表在这一行被读入内存:entry = hdulist[1].data[i]
.
我已经查看了 pyfits 文档,但我找不到任何方法似乎可以从表条目的表条目(或一次少量条目)上从二进制表扩展读取数据。我不想从表中选择某些条目,只需按顺序扫描它们即可。
我想我的问题是:
0) 这一步发生了hdulist[1].data[i]
什么?为什么所有内容都被读入内存?(有没有办法解决这个问题?)
1)我错过了什么,pyfits 真的可以做我想做的吗?
2)那里有另一个python库吗?(即在 FITS 扩展中使用二进制表)
3)如果不是,我可以用不同的二进制(或其他压缩/非 ascii)格式(不是 FITS)重写数据并找到其他一些 python 库或模块来做我想做的事吗?
python - 有条件地从 PyFITS 返回的 Numpy 数组中选择值
我在 pyfits 中打开了一个 FITS 文件。HEADER 文件使用 36个列标签读取XTENSION='BINTABLE'
,如、、、、、等。DIMENSION= 52989R x 36C
'ZBEST'
'ZQUALITY'
'M_B'
'UB'
'PGAL'
现在,我必须从数据中选择“ZQUALITY”大于 2 且“PGAL”等于 3 的对象。然后我必须为符合上述条件的相应对象的“ZBEST”制作直方图。我还必须为这些对象绘制“M_B”与“UB”。
最后,我想将“ZBEST”分成三个切片(zbest < 0.5)、(0.5 < zbest < 1.0)、(zbest > 1.0),并分别绘制直方图和“M_B”与“UB”图。
我坚持选择服从这两个条件的数据。谁能告诉我如何从满足两个条件('ZQUALITY' > 2 & 'PGAL' == 3 )的数据中选择对象?我正在使用 like:data.field[('zquality' > 2) & ('pgal'==3)]
但它不起作用。
python - 按 FITS 文件中多列中的值聚合表行
我有一个包含许多列的 FITS 文件。该文件的简化示例的一部分如下所示:
如果您注意到这里, A 列和 C列的前四行相同,但B列从 1 到 4 不等。那么A 和 C列的接下来 5 个值相同,但B列从 40 到 44 不等。
我想做的是,编写一个程序来创建这样的文件:
也就是说,B 列应该包含 A 列和 C 列相同的值的数量!
我想知道如何在 Python 中做到这一点。它不一定需要处理一个FITS文件,如果FITS文件中有一些不能使用的例程,我也可以将其转换为ASCII格式。
到目前为止我已经尝试过:
我碰到了一个调用的例程Collections
,它有一个调用的子例程Counter
,它计算列表中相等的值的数量并返回它们。
我试过了:
但这只会给我A列中相等的值。有人可以告诉我如何使用此例程将这些值也与C列进行比较吗?
python - Adding columns to a FITS table with PyFITS
Let's assume I have a fits file with one extension, and the data consists of a table of two columns with 100 elements each
Now I want to add to my table a new column, let's say data['field3'], which is another array of 100 elements.
How exactly do I do that ?
python - 在python中读取适合文件
我在从 fit 文件中读取数据时遇到问题。通常我可以很好地从 fit 文件中读取数据,但现在我有一些数据文件给我带来了一些问题。当我尝试读取应该包含三列和一个标题的文件时,我得到的只是一个看起来像这样的数字表:
[[ 64 195 45 ...,0 0 0]]
现在这是整数,数据文件实际上应该包含三列,其中包含三列中的双精度和浮点数,如下所示:
[9819.3801, 0.00000, 0.00000]
[9820.0025、5.50764e-16、1.62396e-16]
[820.6248, -3.75781e-17, 1.51864e-16]
我知道我应该获取这些值,因为 IDL 中名为mrdfits的包可用于检索这些值。我尝试查看 fit 文件包含的数据类型和格式,我的代码如下所示:
我的问题基本上是;是否有另一种方法可以读取数据,以便为我提供三列非整数数据?我想知道是否是因为文件是 BINTABLE ,所以它的读取方式与通常不同?除了我目前所做的之外,还有其他方法可以加载三列吗?如果您需要我澄清一些观点,请询问,因为我目前已经尝试了很多事情,我不确定该采取哪个方向。任何帮助将非常感激!
python - 将列附加到表中,同时保留标题
我正在尝试通过向其附加一些新列来更新 FITS 表扩展。我遵循http://pyfits.readthedocs.org/en/latest/users_guide/users_table.html#merging-tables给出的方法。但是,合并表的标题仅包含识别列所需的最少信息。原始头文件中有我需要的信息。如何将旧表中的所有额外关键字带到新表中?
我已经试过了
并手动为新列添加必要的条目,但这总是会损坏标题并使整个 FITS 文件不可读。
谢谢
python - Pyfits:更改列名/格式
我正在尝试连接 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 类型的对象。有什么我想念的吗?
谢谢
python - instancemethod 对象没有属性“___getitem__”
我正在使用 PyCharm(社区版 4.0.2)从 .fits 文件中检索数据。z = data.field [SDSS_Z] 导致 TypeError:“instancemethod”对象没有属性“ getitem ”。在同一 .fits 文件的其他字段上,我没有问题
python - 将 ASCII 表转换为 FITS 图像
我是这个领域的初学者。我有一个包含三列的文本文件:X,Y,(X,Y)处的强度。它们基本上是数组(1X10000),每个数组都通过 python 写在文本文件中。要在 python 中绘制数据集,我可以简单地使用 trisurf 来实现这一点。但为了进一步处理,我需要从中创建一个适合的图像。如何从此文本文件中制作 FITS 图像(而不是简单的 FITS 表)(最好通过 python 或 matlab)。