Numpy数据类型转换,本章介绍了浮点数据转换,整型数据转换和浮点数据转换为整型数据的方法,numpy
中的数据类型转换,不能直接改原数据的dtype,只能用函数astype()。
浮点数据转换
生成一个浮点数组
import numpy as np
a=np.random.random (4)
print(a)
print(a.dtype)
print(a.shape)
输出结果:
[0.52432201 0.60224917 0.33115065 0.01112018]
float64
(4,)
改变dtype为 float32
,数组长度翻倍!
import numpy as np
a=np.random.random (4)
a.dtype ="float32"
print(a)
print(a.dtype)
print(a.shape)
输出结果:
[-1.4944521e-29 1.7188756e+00 7.2078368e+07 1.6436521e+00
1.7882810e-27 1.8521185e+00 1.2327184e-28 1.3868201e+00]
float32
(8,)
改变dtype为 float16
,数组长度再次翻倍!
import numpy as np
a=np.random.random (4)
a.dtype ="float16"
print(a)
print(a.dtype)
print(a.shape)
输出结果:
[ 2.578e+00 -2.784e+03 1.444e+04 1.954e+00 1.784e+03 1.848e-02
4.435e+02 1.952e+00 7.898e-02 2.286e+03 5.244e-01 1.963e+00
1.387e-03 -5.195e+02 1.330e+04 1.954e+00]
float16
(16,)
改变dtype= float
,默认类型就是float64
,数组长度也变回最初的4
import numpy as np
a=np.random.random (4)
a.dtype ="float"
print(a)
print(a.dtype)
print(a.shape)
输出结果:
[0.24911324 0.20959547 0.63603173 0.13462314]
float64
(4,)
整型数据转换
把a变为整数 int64
,生成长度为4的整型数组
import numpy as np
a=np.random.random (4)
a.dtype="int64"
print(a)
print(a.dtype)
print(a.shape)
输出结果:
[4603169780230330437 4603791794755848367 4590327678251543704
4601630221542246852]
int64
(4,)
改变dtype为 int32
,数组长度翻倍!
import numpy as np
a=np.random.random (4)
a.dtype="int32"
print(a)
print(a.dtype)
print(a.shape)
输出结果:
[1063177318 1070703761 -51852168 1070559365 1151076439 1072171203
2089791055 1072017434]
int32
(8,)
改变dtype为 int16
,数组长度再次翻倍!
import numpy as np
a=np.random.random (4)
a.dtype="int16"
print(a)
print(a.dtype)
print(a.shape)
输出结果:
[ 25603 9379 -16505 16358 -12770 -1128 32291 16351 25792 -2772
-30098 16274 2102 22147 28604 16351]
int16
(16,)
改变dtype为 int8
,数组长度再次翻倍!
import numpy as np
a=np.random.random (4)
a.dtype ="int8"
print(a)
print(a.dtype)
print(a.shape)
输出结果:
[ -70 41 -35 -91 35 106 -34 63 118 11 -23 -66 34 106
-48 63 100 -101 95 108 -95 -1 -27 63 67 -72 75 9
7 -25 -29 63]
int8
(32,)
改变dtype为 int
,整数类型默认为int32
!
import numpy as np
a=np.random.random (4)
a.dtype ="int"
print(a)
print(a.dtype)
print(a.shape)
输出结果:
[ -565583284 1072288162 -1310371190 1071239846 -2000889497 1072307431
999563152 1067958306]
int32
(8,)
浮点数转整数
很多时候我们用numpy
从文本文件读取数据作为numpy的数组,默认的dtype是float64
。
但是有些场合我们希望数据类型为整数。如果直接改dtype=‘int‘的话,就会出错!原因如上,数组长度翻倍了!!!
下面的场景假设我们得到了导入的数据。我们的本意是希望它们是整数,但实际上是却是浮点数(float64)
import numpy as np
b=np.array([1.,2.,3.,4.])
print(b.dtype)
输出结果:float64
用 astype(int) 得到整数,并且不改变数组长度
import numpy as np
b=np.array([1.,2.,3.,4.])
c=b.astype(int)
print(c)
print(c.shape)
print(c.dtype)
输出结果:
[1 2 3 4]
(4,)
int32
如果直接改变b的dtype的话,b的长度翻倍了,这不是我们想要的(当然如果你想的话)
import numpy as np
b=np.array([1.,2.,3.,4.])
b.dtype="int"
print(b)
print(b.shape)
print(b.dtype)
输出结果:
[ 0 1072693248 0 1073741824 0 1074266112
0 1074790400]
(8,)
int32
numpy
中的数据类型转换,不能直接改原数据的dtype,只能用函数astype()
。