Numpy:统一获取数组与列表数据类型的方法
通用获取numpy数组/列表兼容数据类型的方法
这个需求太实用了!确实直接用.dtype只能处理numpy数组,列表根本没这个属性,而你想找的那种“自动推断能容纳所有元素的最大类型”的方法,numpy其实已经给我们准备好了——numpy.result_type(),它完美适配numpy数组和列表两种输入。
怎么用?直接看例子:
首先导入numpy:
import numpy as np
1. 处理numpy数组的情况
和直接用.dtype效果完全一致,甚至更灵活:
arr = np.array([1, 2.2]) print(np.result_type(arr)) # 输出: float64 print(arr.dtype) # 同样输出: float64
2. 处理列表的情况
直接把列表传进去就行,它会自动推断出能容纳所有元素的最小兼容类型(也就是你说的“最大类型”):
lst = [1, 2.2] print(np.result_type(lst)) # 输出: float64
为什么这个方法靠谱?
np.result_type()的设计目标就是返回输入数据的最小兼容numpy数据类型,不管你传的是numpy数组、普通列表、元组,甚至单个数值都能处理:
- 纯整数列表:
np.result_type([1, 3, 5])→ 返回int64(系统不同可能略有差异,但都是适配的整数类型) - 整数+复数混合:
np.result_type([1, 2+3j])→ 返回complex128 - 单个元素:
np.result_type(5)→int64,np.result_type(5.5)→float64
关于你提到的numpy.dtype
你之前以为np.dtype能实现,其实它的作用是创建/解析数据类型对象,比如np.dtype('float64'),但它没法直接从数据(比如列表)推断类型——如果直接传列表给它,比如np.dtype([1,2.2]),会直接报错,因为它需要的是类型描述符,不是数据本身。所以np.result_type()才是正确的选择。
内容的提问来源于stack exchange,提问作者bremen_matt
相关产品推荐
相关产品推荐

