如何将一维numpy数组元素转换为普通int、float、double类型值
Numpy 单元素包裹结构转原生数值的方法
你遇到的是「长度为1的列表/元组包裹单元素numpy数组」的结构,按两步处理即可:
- 第一步:提取容器内的numpy数组
无论外层是(np.array([1]),)类的元组还是[np.array([1]),]类的列表,直接用[0]索引即可取出内部的numpy数组对象。 - 第二步:将单元素numpy数组转为Python原生数值,有三类常用方案:
- 通用
item()方案
最推荐的用法,会自动匹配numpy数组的dtype转换为对应的Python原生类型(整数转int,浮点数转对应精度的float),示例代码:
# 元组包裹场景 tuple_val = (np.array([1]),) int_val = tuple_val[0].item() print(int_val, type(int_val)) # 输出:1 <class 'int'> # 列表包裹场景 list_val = [np.array([2.718]),] float_val = list_val[0].item() print(float_val, type(float_val)) # 输出:2.718 <class 'float'>- 索引取值方案
确定数组为一维单元素时,直接用[0]取值即可,返回的numpy标量类型绝大多数场景可直接作为原生数值使用,如需严格转换为原生类型可额外套int()/float():
arr = np.array([3.14]) num = arr[0] # 类型为numpy.float64,可直接参与数值运算 native_num = float(arr[0]) # 转为原生float类型- 强制类型转换方案
明确需要指定输出类型时,直接对numpy数组套int()/float()即可完成转换:
arr = np.array([5]) int_res = int(arr) # 5 <class 'int'> float_res = float(arr) # 5.0 <class 'float'> - 通用
注意:以上方法仅适用于内部numpy数组仅含单个元素的场景,如果数组包含多个元素,调用
item()会抛出异常,需要根据业务需求取指定位置元素或做聚合计算后再转换。
内容的提问来源于stack exchange,提问作者Siderius
相关产品推荐
相关产品推荐

