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实现基于HTTP文件传输实例
Nov 08 Python
Sanic框架蓝图用法实例分析
Jul 17 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
Feb 18 Python
Python lambda表达式filter、map、reduce函数用法解析
Sep 11 Python
python3实现弹弹球小游戏
Nov 25 Python
简单了解Django ORM常用字段类型及参数配置
Jan 07 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
Feb 27 Python
Python修改列表值问题解决方案
Mar 06 Python
Python sql注入 过滤字符串的非法字符实例
Apr 03 Python
Python格式化输出--%s,%d,%f的代码解析
Apr 29 Python
Python如何避免文件同名产生覆盖
Jun 09 Python
Python常用类型转换实现代码实例
Jul 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
MySQL中create table语句的基本语法是
2007/01/15 PHP
php class中public,private,protected的区别以及实例分析
2013/06/18 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
一个简单的php路由类
2016/05/29 PHP
JS中的异常处理方法分享
2013/12/22 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
jquery插件之定时查询待处理任务数量
2014/05/01 Javascript
javascript实现Email邮件显示与删除功能
2015/11/21 Javascript
jQuery3.0中的buildFragment私有函数详解
2016/08/16 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
html判断当前页面是否在iframe中的实例
2016/11/30 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
微信小程序手势操作之单触摸点与多触摸点
2017/03/10 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
2018/09/13 Javascript
vue.js多页面开发环境搭建过程
2019/04/24 Javascript
微信小程序Page中data数据操作和函数调用方法
2019/05/08 Javascript
详解javascript中var与ES6规范中let、const区别与用法
2020/01/11 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
Python3读取文件常用方法实例分析
2015/05/22 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
python使用Matplotlib绘制分段函数
2018/09/25 Python
Python库skimage绘制二值图像代码实例
2020/04/10 Python
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
Sofft鞋官网:世界知名鞋类品牌
2017/03/28 全球购物
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
美国高端牛仔品牌:Silver Jeans
2019/12/12 全球购物
商场总经理岗位职责
2014/02/03 职场文书
公司保密承诺书
2014/03/27 职场文书
家长建议怎么写
2014/05/15 职场文书
2014年生产部工作总结
2014/12/17 职场文书
培训师岗位职责
2015/02/14 职场文书
深入理解margin塌陷和margin合并的解决方案
2021/06/26 HTML / CSS