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 字典(Dictionary)操作详解
Mar 11 Python
Python中生成器和yield语句的用法详解
Apr 17 Python
简化Python的Django框架代码的一些示例
Apr 20 Python
Python内置函数OCT详解
Nov 09 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
Apr 11 Python
使用Python实现一个栈判断括号是否平衡
Aug 23 Python
python  Django中的apps.py的目的是什么
Oct 15 Python
Python解析Excle文件中的数据方法
Oct 23 Python
详解python 爬取12306验证码
May 10 Python
Python利用pandas处理Excel数据的应用详解
Jun 18 Python
python绘制地震散点图
Jun 18 Python
Python如何创建装饰器时保留函数元信息
Aug 07 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
虹吸壶煮咖啡26个注意事项
2021/03/03 冲泡冲煮
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
2010/06/12 Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
2013/01/23 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
怎么引入(调用)一个JS文件
2016/05/26 Javascript
JS之相等操作符详解
2016/09/13 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
2017/04/20 Javascript
基于Vue的移动端图片裁剪组件功能
2017/11/28 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
vue打开子组件弹窗都刷新功能的实现
2020/09/21 Javascript
js实现缓动动画
2020/11/25 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
python实现批量转换文件编码(批转换编码示例)
2014/01/23 Python
pymongo实现多结果进行多列排序的方法
2015/05/16 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
详解Python中is和==的区别
2019/03/21 Python
Python3中的bytes和str类型详解
2019/05/02 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
python线程的几种创建方式详解
2019/08/29 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
Django更新models数据库结构步骤
2020/04/01 Python
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
Myprotein丹麦官网:欧洲第一运动营养品牌
2019/04/15 全球购物
彪马法国官网:PUMA法国
2019/12/15 全球购物
员工培训心得体会
2013/12/30 职场文书
2014年保密工作总结
2014/11/22 职场文书
幼师中班个人总结
2015/02/12 职场文书
焦裕禄观后感
2015/06/03 职场文书
严以律己学习心得体会
2016/01/13 职场文书
HTML中的表单元素介绍
2022/02/28 HTML / CSS