无法对含astropy.Time对象的numpy数组执行乘法运算
解决Python中numpy数组与astropy.Time对象相乘导致的段错误问题
你遇到的Fatal Python error: Segmentation fault本质原因是:list2中的数组元素并非普通numpy数值数组,而是带有astropy.Time隐式单位的时间对象,这类对象与普通numpy数组直接执行乘法操作时,会触发底层内存访问错误。
解决步骤:
验证元素类型:先确认list2元素的类型,执行以下代码:
print(type(list2[0])) print(list2[0])若输出包含
astropy.time.Time相关标识,即可确认问题根源。提取数值分量再运算:astropy.Time对象可通过
.value属性提取其原始数值(如JD、MJD格式的浮点数),转换为普通numpy数组后再做乘法:# 单个元素相乘示例 single_result = list1[0] * list2[0].value批量处理list2所有元素:用列表推导式或循环高效完成批量运算:
# 列表推导式写法 all_results = [list1[0] * arr.value for arr in list2] # 普通循环写法 all_results = [] for arr in list2: all_results.append(list1[0] * arr.value)额外注意:确保该乘法操作符合天文数据的物理意义,若无需保留时间单位上下文,再执行上述提取操作;若有单位转换需求,可先通过astropy的单位系统处理后再运算。
内容的提问来源于stack exchange,提问作者Raz
相关产品推荐
相关产品推荐

