在本文中,您将玩numpy的数字数据类型转换
导入numpy
import numpy as np
一.自由玩耍
生成浮点数组
a=NP.random.random(4) )。
看信息
a
array ([ 0.0945377,0.52199916,0.62490646,0.21260126 ] ) a.dtype
dype (浮动64 ) ) a.shape
(4、) )。
我发现改变dtype后,数组的长度会增加两倍!
a.dtype='float32 '
a
array (3.65532693 e20,1.43907535 e00,- 3.31994873 e-25,1.75549972 e00,- 2.75686653 e14,1.78122652 e00,-1.03207532e
(8、)。
更改dtype,使数组长度再次加倍!
a.dtype='float16 '
a
array ([-9.58442688 e-05,7.1900000 e02,2.38159180 e-01,1.92968750 e00,nan,-1.66034698e-03,- 2.63427734 e-00000 -1.60156250e-01,- 7.76290894 e-03,4.07226562 e-01,1.94824219 e00 ],dtype=
(16、)。
更改dtype='float '时,我们发现默认值为float64,长度也返回到前4
a.dtype='float '
a
array ([ 0.0945377,0.52199916,0.62490646,0.21260126 ] ) a.shape
(4,) a.dtype
dype (浮动64 ) ) ) )。
设a为整数,观察该信息
a.dtype='int64 '
a
array (4591476579734816328,4602876970018897584,4603876586077261,459682787908854048 ),dtype=int64 ) a.shape
(4、) )。
我发现改变dtype后,数组的长度会增加两倍!
a.dtype='int32 '
a
array (163779016,1069036447,- 1764917584,1071690807,- 67982259,1071906619,- 1611419360,1070282372 ) ) a.SS
(8、)。
我发现改变dtype后,数组的长度会再次翻倍!
a.dtype='int16 '
a
array ([-31160、24990、13215、16312、32432、-26931、- 19401、16352、-17331、-10374、- 197、16355、-20192 )
(16、)。
我发现改变dtype后,数组的长度会再次翻倍!
a.dtype='int8'
a
Array([72,-122,- 98,97,- 97,51,- 72,63,- 80,126,-51,- 106,55,- 32,63,77,- 68,122 )
(32,)。
更改dtype以找到整数的默认int32!
a.dtype='int '
a.dtype
dype(int32 ) ) a
array (163779016,1069036447,- 1764917584,1071690807,- 67982259,1071906619,- 1611419360,1070282372 ) ) a.SS
(8、)。
二.改变玩法
通常,从文本文件中以numpy读取数据,将其作为numpy数组,默认的dtype为float64。
但是,您可能希望将某些数据列设置为整数。 如果直接变更dtype='int ',就会发生错误! 理由如上所述,排列的长度增加了两倍!
在下一个场景中,假设得到了导入的数据。 我们的意图是希望它们是整数,但实际上是浮点数float64
b=NP.Array([1.2 .3 .4.] ) b.dtype
dype (浮动64 ) ) ) )。
通过astype(int )得到整数,不改变数组的长度
c=b.as类型(int ) c
array ([ 1,2,3,4 ]
c.shape
(8,) c.dtype
dype(int32 ) )。
直接改变b的dtype,b的长度会增加一倍。 这不是我们想要的(当然如果你想要的话)。
B
array([1.2 .3 .4.] ) b.dtype='int '
b.dtype
dype(int32 ) ) b
array ([ 0,1072693248,0,1073741824,0,1074266112,0,1074790400 ] ) b.shape
(8、)。
三.结论
使用numpy进行数据类型转换不能直接更改原始数据的dtype! 函数astype (只能使用。