numpy数据类型dtype转换实现


Posted in Python onApril 24, 2021

这篇文章我们玩玩numpy的数值数据类型转换

导入numpy

>>> import numpy as np

一、随便玩玩

生成一个浮点数组

>>> a = np.random.random(4)

看看信息

>>> a
array([ 0.0945377 ,  0.52199916,  0.62490646,  0.21260126])
>>> a.dtype
dtype('float64')
>>> a.shape
(4,)

改变dtype,发现数组长度翻倍!

>>> a.dtype = 'float32'
>>> a
array([  3.65532693e+20,   1.43907535e+00,  -3.31994873e-25,
         1.75549972e+00,  -2.75686653e+14,   1.78122652e+00,
        -1.03207532e-19,   1.58760118e+00], dtype=float32)
>>> a.shape
(8,)

改变dtype,数组长度再次翻倍!

>>> a.dtype = 'float16'
>>> a
array([ -9.58442688e-05,   7.19000000e+02,   2.38159180e-01,
         1.92968750e+00,              nan,  -1.66034698e-03,
        -2.63427734e-01,   1.96875000e+00,  -1.07519531e+00,
        -1.19625000e+02,              nan,   1.97167969e+00,
        -1.60156250e-01,  -7.76290894e-03,   4.07226562e-01,
         1.94824219e+00], dtype=float16)
>>> a.shape
(16,)

改变dtype='float',发现默认就是float64,长度也变回最初的4

>>> a.dtype = 'float'
>>> a
array([ 0.0945377 ,  0.52199916,  0.62490646,  0.21260126])
>>> a.shape
(4,)
>>> a.dtype
dtype('float64')

把a变为整数,观察其信息

>>> a.dtype = 'int64'
>>> a
array([4591476579734816328, 4602876970018897584, 4603803876586077261,
       4596827787908854048], dtype=int64)
>>> a.shape
(4,)

改变dtype,发现数组长度翻倍!

>>> a.dtype = 'int32'
>>> a
array([ 1637779016,  1069036447, -1764917584,  1071690807,  -679822259,
        1071906619, -1611419360,  1070282372])
>>> a.shape
(8,)

改变dtype,发现数组长度再次翻倍!

>>> a.dtype = 'int16'
>>> a
array([-31160,  24990,  13215,  16312,  32432, -26931, -19401,  16352,
       -17331, -10374,   -197,  16355, -20192, -24589,  13956,  16331], dtype=int16)
>>> a.shape
(16,)

改变dtype,发现数组长度再次翻倍!

>>> a.dtype = 'int8'
>>> a
array([  72, -122,  -98,   97,  -97,   51,  -72,   63,  -80,  126,  -51,
       -106,   55,  -76,  -32,   63,   77,  -68,  122,  -41,   59,   -1,
        -29,   63,   32,  -79,  -13,  -97, -124,   54,  -53,   63], dtype=int8)
>>> a.shape
(32,)

改变dtype,发现整数默认int32!

>>> a.dtype = 'int'
>>> a.dtype
dtype('int32')
>>> a
array([ 1637779016,  1069036447, -1764917584,  1071690807,  -679822259,
        1071906619, -1611419360,  1070282372])
>>> a.shape
(8,)

二、换一种玩法

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

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

>>> b = np.array([1., 2., 3., 4.])
>>> b.dtype
dtype('float64')

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

>>> c = b.astype(int)
>>> c
array([1, 2, 3, 4])
>>> c.shape
(8,)
>>> c.dtype
dtype('int32')

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

>>> b
array([ 1.,  2.,  3.,  4.])

>>> b.dtype = 'int'
>>> b.dtype
dtype('int32')
>>> b
array([         0, 1072693248,          0, 1073741824,          0,
       1074266112,          0, 1074790400])
>>> b.shape
(8,)

三、结论

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

到此这篇关于numpy数据类型dtype转换实现的文章就介绍到这了,更多相关numpy dtype转换内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
详细介绍Python的鸭子类型
Sep 12 Python
python的scikit-learn将特征转成one-hot特征的方法
Jul 10 Python
Python自定义一个异常类的方法
Jun 27 Python
Python列表与元组的异同详解
Jul 02 Python
python3+django2开发一个简单的人员管理系统过程详解
Jul 23 Python
python装饰器练习题及答案
Nov 01 Python
django使用xadmin的全局配置详解
Nov 15 Python
python通过链接抓取网站详解
Nov 20 Python
django 文件上传功能的相关实例代码(简单易懂)
Jan 22 Python
python2 对excel表格操作完整示例
Feb 23 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
Jul 01 Python
Python基于mediainfo批量重命名图片文件
Dec 29 Python
解决python存数据库速度太慢的问题
Apr 23 #Python
python实战之90行代码写个猜数字游戏
Apr 22 #Python
python实战之一步一步教你绘制小猪佩奇
Apr 22 #Python
python 破解加密zip文件的密码
python入门之算法学习
Apr 22 #Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 #Python
python 实现德洛内三角剖分的操作
You might like
PHP 学习路线与时间表
2010/02/21 PHP
PHP实现仿Google分页效果的分页函数
2015/07/29 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
php简单复制文件的方法
2016/05/09 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
js parsefloat parseint 转换函数
2010/01/21 Javascript
关于JavaScript定义类和对象的几种方式
2010/11/09 Javascript
JS实现图片预加载无需等待
2012/12/21 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
jQuery 选择器详解
2015/01/19 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
javascript数组去重方法汇总
2015/04/23 Javascript
Javascript闭包(Closure)详解
2015/05/05 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
vue 使用鼠标滚动加载数据的例子
2019/10/31 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
2020/04/10 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
前端开发基础javaScript的六大作用
2020/08/06 Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
2020/11/05 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
python调用Delphi写的Dll代码示例
2017/12/05 Python
python实现两张图片的像素融合
2019/02/23 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
2020/03/25 Python
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
自我鉴定范文
2013/11/10 职场文书
跟单文员的岗位职责
2013/11/14 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书