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爬虫之打包生成exe文件
Nov 06 Python
Python的Django框架中的数据过滤功能
Jul 17 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
Sep 18 Python
pandas 对series和dataframe进行排序的实例
Jun 09 Python
解决python中 f.write写入中文出错的问题
Oct 31 Python
Django利用cookie保存用户登录信息的简单实现方法
May 27 Python
代码实例讲解python3的编码问题
Jul 08 Python
flask框架路由常用定义方式总结
Jul 23 Python
python实现的自动发送消息功能详解
Aug 15 Python
python3 tcp的粘包现象和解决办法解析
Dec 09 Python
完美处理python与anaconda环境变量的冲突问题
Apr 07 Python
Python实现提取PDF简历信息并存入Excel
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
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
JavaScript脚本语言在网页中的简单应用
2007/05/13 Javascript
基于Jquery的简单&简陋Tabs插件代码
2010/02/09 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
2016/08/26 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
2018/03/06 Javascript
wx-charts 微信小程序图表插件的具体使用
2019/08/18 Javascript
浅谈javascript如何获取文件后缀名
2020/08/07 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
用Python实现协同过滤的教程
2015/04/08 Python
python将字符串转换成数组的方法
2015/04/29 Python
Python查找文件中包含中文的行方法
2018/12/19 Python
python http基本验证方法
2018/12/26 Python
Python气泡提示与标签的实现
2020/04/01 Python
Python格式化输出--%s,%d,%f的代码解析
2020/04/29 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
全陪导游欢迎词
2014/01/17 职场文书
党务公开方案
2014/05/06 职场文书
小学阳光体育活动总结
2014/07/05 职场文书
党员三严三实对照检查材料
2014/10/13 职场文书
营销计划书
2015/01/17 职场文书
关于颐和园的导游词
2015/01/30 职场文书
工程部部长岗位职责
2015/02/12 职场文书
2015年七一建党节演讲稿
2015/03/19 职场文书
不服劳动仲裁起诉书
2015/05/20 职场文书
不同意离婚答辩状
2015/05/22 职场文书
大学生社会实践感想
2015/08/11 职场文书
2021年最新用于图像处理的Python库总结
2021/06/15 Python
Pytest中conftest.py的用法
2021/06/27 Python