为何Numpy官方称不支持混合数据类型却可创建含字符串与数字的数组
问题解答
你观测到的运行结果和Numpy官方说明并不冲突,核心原因如下:
- Numpy定义的「不支持异质数据类型」,指的是数组内所有元素必须属于同一个原生数据类型(dtype),不会为不同输入元素保留各自的原生类型,不存在同一数组下部分元素是整数、部分是字符串的情况。
- 你给出的示例中,Numpy会自动做「类型向上转换」:字符串类型的优先级高于整数,因此所有输入的整数
3、4、5都会被自动转换为字符串格式,最终整个数组的dtype为字符串类型。你可以执行print(x.dtype)验证,输出结果为类似<U5的字符串类型标识,打印数组的输出为['hello' '3' '4' '5'],所有元素均为字符串格式。 - 你示例代码中的
print(a)属于笔误,修正为print(x)就可以正常看到转换后的结果。
如果需要强行存储不同原生类型的Python对象,可以手动指定dtype为object,但这种情况下数组存储的是Python对象的引用,所有元素的类型本质上还是统一的「对象引用」,不属于原生异质类型支持,同时会丢失Numpy的矢量运算性能优势,非特殊场景不推荐使用。
内容的提问来源于stack exchange,提问作者Jahanzaib Niazi
相关产品推荐
相关产品推荐

