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牛刀小试密码爆破
Feb 03 Python
Pyhton中防止SQL注入的方法
Feb 05 Python
Python操作Word批量生成文章的方法
Jul 28 Python
python直接获取API传递回来的参数方法
Dec 17 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
Jun 24 Python
远程部署工具Fabric详解(支持Python3)
Jul 04 Python
浅析pandas 数据结构中的DataFrame
Oct 12 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
Dec 13 Python
Python 实现黑客帝国中的字符雨的示例代码
Feb 20 Python
python实现对变位词的判断方法
Apr 05 Python
基于matplotlib xticks用法详解
Apr 16 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
May 26 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
Smarty的配置与高级缓存技术分享
2012/06/05 PHP
PHP 中关于ord($str)>0x80的详细说明
2012/09/23 PHP
php array_pop 删除数组最后一个元素实例
2016/11/02 PHP
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
jQuery实现限制文本框的输入长度
2017/01/11 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
2017/07/28 Javascript
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
Python中关键字is与==的区别简述
2014/07/31 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
Python中的函数作用域
2018/05/07 Python
Python使用gRPC传输协议教程
2018/10/16 Python
matplotlib实现热成像图colorbar和极坐标图的方法
2018/12/13 Python
Python如何基于selenium实现自动登录博客园
2019/12/16 Python
Python 如何定义匿名或内联函数
2020/08/01 Python
Flask-SocketIO服务端安装及使用代码示例
2020/11/26 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
Html5之svg可缩放矢量图形_动力节点Java学院整理
2017/07/17 HTML / CSS
瑞士领先的网上超市:LeShop.ch
2018/11/14 全球购物
大学生最常用的自我评价
2013/12/07 职场文书
大学社团活动策划书
2014/01/26 职场文书
违纪检讨书2000字
2014/02/08 职场文书
《姥姥的剪纸》教学反思
2014/02/25 职场文书
建筑工地大门标语
2014/06/18 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
社会实践活动总结
2015/02/05 职场文书
民事起诉书范本
2015/05/19 职场文书
2015中学教学工作总结
2015/07/22 职场文书
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python