Numpy数据类型转换

Numpy数据类型转换,本章介绍了浮点数据转换,整型数据转换和浮点数据转换为整型数据的方法,numpy中的数据类型转换,不能直接改原数据的dtype,只能用函数astype()
Numpy数据类型转换

浮点数据转换

生成一个浮点数组

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()

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程