今天在进行numpy运算的时候碰上了一个数据类型转换的坑,记录一下。
问题:假设n1是uint8类型的,n2是float64类型的,请问n1 = n1 + n2
得到的n1是什么类型呢?n1[1:5] = n1[1:5] + n2[1:5]
(数组的大小不止6个,取部分运算)得到的n1的数据类型呢?
答:n1 = n1 + n2
将会得到一个float64的数组;而n1[1:5] = n1[1:5] + n2[1:5]
依旧是一个uint8的数组。如果n1[1:5]中有负数如-4,则会被转换为252,我就是在这翻车的!
- 一个uint8类型的numpy数组与一个float64类型的做加减运算,得到的结果是float64类型的。
- 一个uint8类型的numpy数组切片与一个float64类型的做加减运算,得到的结果是uint8类型的。