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 相关文章推荐
解读Django框架中的低层次缓存API
Jul 24 Python
一步步解析Python斗牛游戏的概率
Feb 12 Python
Python+selenium 获取一组元素属性值的实例
Jun 22 Python
使用Python做定时任务及时了解互联网动态
May 15 Python
python opencv minAreaRect 生成最小外接矩形的方法
Jul 01 Python
python 自动轨迹绘制的实例代码
Jul 05 Python
python自动化测试之异常及日志操作实例分析
Nov 09 Python
面向新手解析python Beautiful Soup基本用法
Jul 11 Python
记一次django内存异常排查及解决方法
Aug 07 Python
Python GUI库Tkiner使用方法代码示例
Nov 27 Python
python使用numpy中的size()函数实例用法详解
Jan 29 Python
python基于tkinter制作下班倒计时工具
Apr 28 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在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
2011/08/03 PHP
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
jQuery 事件队列调整方法
2009/09/18 Javascript
不同浏览器的怪癖小结
2010/07/11 Javascript
jQuery function的正确书写方法
2013/08/02 Javascript
js 判断控件获得焦点的示例代码
2014/03/04 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
Ionic快速安装教程
2016/06/03 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
jQuery第一次运行页面默认触发点击事件的实例
2018/01/10 jQuery
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
Vue父组件如何获取子组件中的变量
2019/07/24 Javascript
解决vue打包后刷新页面报错:Unexpected token
2019/08/27 Javascript
js prototype深入理解及应用实例分析
2019/11/25 Javascript
Python实现抓取网页并且解析的实例
2014/09/20 Python
详解Python设计模式之策略模式
2020/06/15 Python
解决import tensorflow导致jupyter内核死亡的问题
2021/02/06 Python
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
50道外企软件测试面试题
2014/08/18 面试题
出国签证在职证明
2014/01/16 职场文书
采购主管岗位职责
2014/02/01 职场文书
幼儿园五一活动方案
2014/02/07 职场文书
临床护理求职信
2014/04/26 职场文书
献爱心活动总结
2014/05/07 职场文书
HR求职自荐信范文
2014/06/21 职场文书
部队个人年终总结
2015/03/02 职场文书
2015年员工试用期工作总结
2015/05/28 职场文书
开业庆典致辞
2015/08/01 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书
导游词之千岛湖
2019/09/23 职场文书
python实现图片批量压缩
2021/04/24 Python
MySQL 常见存储引擎的优劣
2021/06/02 MySQL
ObjectMapper 如何忽略字段大小写
2021/06/29 Java/Android