参考NumPy 数据类型 - 云+社区 - 腾讯云

首先需要导入numpy模块

import numpy as np

首先生成一个浮点数组

a = np.random.random(4)

dtype的用法

看看结果信息,左侧是结果信息,右侧是对应的python语句

我们发现这个数组的type是float64,那我们试着改变一个数组的类型,会有什么样的变化呢?请看下面的截图

我们发现数组长度翻倍了!由原来的(4,)变成了(8,)

那么,再次改变数组的类型,由float32改为float16,会是什么样的结果呢?

果然不出所料,数组的长度再次翻倍,由原来的(8,)变成了(16,)

如果再次改变数组的类型,由float16变为float64,会发现数组的长度也会由(16,)变为(4,)

同理,如果数组的类型是int,也会有这样类似的变化

dtype = 'int32'  时对应的的数组长度为 (8,)

若改为  a.dtype = 'int16',则数组长度会再次翻倍,变为(16,)

若改为  a.dtype = 'int8',则数组成都会再次翻倍,变为(32,)

如果改为 a.dtype = 'int',会发现整数默认的是int32;如果改为 a.dtype = 'float' ,会发现浮点型默认的是float64

float型和int型转换

很多时候我们用numpy从文本文件读取数据作为numpy的数组,默认的dtype是float64。
但是有些场合我们希望有些数据列作为整数。如果直接改dtype='int'的话,就会出错!原因如上,数组长度翻倍了!!!

下面的场景假设我们得到了导入的数据。我们的本意是希望它们是整数,但实际上是却是浮点数(float64)

用 astype(int) 得到整数,并且不改变数组长度

如果直接改变b的dtype的话,b的长度翻倍了,这不是我们想要的(当然如果你想的话)

结论

numpy中的数据类型转换,不能直接改原数据的dtype!  只能用函数astype()。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐