为何创建为float64的NumPy数据类型kind返回'V'(void)?
问题原因与解决方案
你定义的d是一个结构化dtype,其中"pos"字段对应的是一个长度为3的float64数组类型。当你通过d[0]访问这个字段的dtype时,numpy返回的是代表"固定大小内存块"的void类型(kind为'V')——因为这个字段本身是包含多个元素的数组,而非单个标量类型。
要获取字段内部元素的实际类型,需要访问其subdtype属性:
import numpy as np d = np.dtype([("pos", np.float64, 3)]) # 获取字段对应的元素类型 element_type = d['pos'].subdtype[0] print(element_type.kind) # 输出 'f'
类型判断逻辑
你可以通过元素类型的kind值区分不同数据类型:
- 整数类型:
kind为'i'(有符号)或'u'(无符号) - 浮点数类型:
kind为'f' - 字符串类型:
kind为'U'(Unicode)或'S'(字节串)
内容的提问来源于stack exchange,提问作者Abel Gutiérrez
相关产品推荐
相关产品推荐

