首先需要导入numpy模块
代码语言:javascript复制import numpy as np
首先生成一个浮点数组
代码语言:javascript复制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()。
各位看官老爷,如果觉得对您有用麻烦赏个子,创作不易,0.1元就行了。下面是微信乞讨码:
添加描述
添加描述