You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将FITS_rec类型的FITS数据转换为多维numpy数组

解决FITS记录转多维NumPy数组的索引问题
  • 提取结构化字段:FITS_rec属于NumPy结构化数组,直接用np.asarray()转换会得到无法直接索引的对象数组,需先按字段拆分数据:

    # 从HDU中获取FITS结构化数据
    fits_data = hdul[1].data
    # 按字段提取独立数组
    time_arr = fits_data['time']
    rate_arr = fits_data['rate']
    error_arr = fits_data['error']
    totcounts_arr = fits_data['TOTCOUNTS']
    fraxexp_arr = fits_data['fraxexp']
    
  • 转换变长rate/error为二维数组:由于不同文件中rate/error的元素数量可能不同,先将字段数组转为列表再转成二维NumPy数组:

    # 转换为可直接索引的二维数组(若所有子数组长度一致)
    rate_2d = np.array(rate_arr.tolist())
    error_2d = np.array(error_arr.tolist())
    

    若存在子数组长度不一致的情况,np.array()仍会返回对象数组,此时可根据需求对短数组补全或截断,或用Pandas DataFrame统一处理。

  • 组合成多维数组(可选):若需将所有字段合并为一个多维数组,先将标量字段扩展维度,再沿列拼接:

    # 扩展标量字段的维度,与二维rate/error数组匹配
    time_expanded = time_arr[:, np.newaxis]
    totcounts_expanded = totcounts_arr[:, np.newaxis]
    fraxexp_expanded = fraxexp_arr[:, np.newaxis]
    
    # 拼接为完整的多维数组
    combined_arr = np.hstack([time_expanded, rate_2d, error_2d, totcounts_expanded, fraxexp_expanded])
    
  • 验证索引操作:转换完成后即可轻松索引数据,例如:

    • 取第3行的第2个rate值:rate_2d[2, 1]
    • 取所有行的error数据:error_2d[:, :]
    • 取组合数组中第5行的time和所有rate值:combined_arr[4, 0:5]

内容的提问来源于stack exchange,提问作者Maxwell A. Fine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 15:15:41