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

将存储'+'/'-'字符的numpy数组转为±1整数,是否有numpy/astropy内置函数?

可用实现方案

NumPy原生内置方法

你可以直接用NumPy内置的np.where实现,相比你当前的写法可读性更高,性能完全一致,都是全向量化操作,适合处理大尺寸的科学表格数据:

import numpy as np

sign_char_array = np.array(['+', '-', '+', '+'])
converted_sign_array = np.where(sign_char_array == '+', 1, -1)
# 输出:array([ 1, -1,  1,  1])

Astropy天文场景专属方案

作为天文领域常用工具,Astropy有专门适配六十进制坐标处理的接口,不需要你手动转换符号再做乘法,可以直接把单独的符号列和后续的度/分/秒数值列组合转换为角度对象:

from astropy.coordinates import Angle
import astropy.units as u
import numpy as np

# 示例数据:符号列、度列、分列、秒列
sign_col = np.array(['+', '-', '+', '+'])
deg_col = np.array([23, 10, 45, 0])
min_col = np.array([30, 15, 2, 59])
sec_col = np.array([15.2, 3.6, 44.8, 10.1])

# 直接拼接为标准角度字符串后转Angle对象,自动处理符号
dec_angle = Angle(sign_col + deg_col.astype(str) + 'd' + min_col.astype(str) + 'm' + sec_col.astype(str) + 's')

# 可直接导出为带符号的十进制度、弧度等数值格式供后续计算
dec_degree = dec_angle.degree

如果你确实需要单独的±1符号数组,结合np.where处理Astropy Table的列数据也是天文领域常用的实现方式,兼容性和性能都能满足科研数据处理需求。

内容的提问来源于stack exchange,提问作者tomr_stargazer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 09:45:01