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 快速排序代码
Nov 23 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
Jun 03 Python
Python爬虫天气预报实例详解(小白入门)
Jan 24 Python
Python决策树和随机森林算法实例详解
Jan 30 Python
python3使用smtplib实现发送邮件功能
May 22 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
Mar 14 Python
python接口自动化(十六)--参数关联接口后传(详解)
Apr 16 Python
Python flask框架post接口调用示例
Jul 03 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
Jul 22 Python
Python通过递归获取目录下指定文件代码实例
Nov 07 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
Jun 29 Python
Python pyecharts绘制条形图详解
Apr 02 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
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
2014最热门的24个php类库汇总
2014/12/18 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
laravel 根据不同组织加载不同视图的实现
2019/10/14 PHP
javascript 写类方式之一
2009/07/05 Javascript
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
处理及遍历XML文档DOM元素属性及方法整理
2013/08/23 Javascript
js计算两个时间之间天数差的实例代码
2013/11/19 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
javascript内置对象arguments详解
2014/03/16 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
2017/03/08 Javascript
webpack搭建vue 项目的步骤
2017/12/27 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
前端路由&webpack基础配置详解
2019/06/10 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
python在控制台输出进度条的方法
2015/06/20 Python
Python基于identicon库创建类似Github上用的头像功能
2017/09/25 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
TensorFlow:将ckpt文件固化成pb文件教程
2020/02/11 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
计算机专业大学生的自我评价
2013/11/14 职场文书
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
会计电算化专业毕业生推荐信
2013/12/24 职场文书
创先争优宣传标语
2014/10/08 职场文书
活动新闻稿范文
2015/07/17 职场文书
停车场管理制度范本
2015/08/05 职场文书
2016年春季运动会广播稿
2015/08/19 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS
Python绘画好看的星空图
2022/03/17 Python