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 相关文章推荐
仅用50行Python代码实现一个简单的代理服务器
Apr 08 Python
python中zip()方法应用实例分析
Apr 16 Python
python模块smtplib实现纯文本邮件发送功能
May 22 Python
详解django.contirb.auth-认证
Jul 16 Python
linux查找当前python解释器的位置方法
Feb 20 Python
Python 操作 ElasticSearch的完整代码
Aug 04 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
Aug 06 Python
Django 请求Request的具体使用方法
Nov 11 Python
基于Tensorflow批量数据的输入实现方式
Feb 05 Python
如何用python清洗文件中的数据
Jun 18 Python
Python+Selenium自动化环境搭建与操作基础详解
Mar 13 Python
python使用torch随机初始化参数
Mar 22 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中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
解析PHP多种序列化与反序列化的方法
2013/06/06 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
2014/12/17 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
tp5修改(实现即点即改)
2019/10/18 PHP
网页图片延时加载的js代码
2010/04/22 Javascript
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
2015/11/25 Javascript
基于JavaScript代码实现随机漂浮图片广告
2016/01/05 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
Angular实现响应式表单
2017/08/04 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
深入理解Vue 组件之间传值
2018/08/16 Javascript
python搭建虚拟环境的步骤详解
2016/09/27 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
2019/08/27 Python
Python 爬虫实现增加播客访问量的方法实现
2019/10/31 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
Python Scrapy多页数据爬取实现过程解析
2020/06/12 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
会计自荐书
2013/12/02 职场文书
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
工作检讨书怎么写
2015/01/23 职场文书
房产公证书格式
2015/01/26 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
详解PHP Swoole与TCP三次握手
2021/05/27 PHP
postgresql之greenplum字符串去重拼接方式
2023/05/08 PostgreSQL