数据格式汇总及type, astype, dtype区别「建议收藏」

数据格式汇总及type, astype, dtype区别「建议收藏」标签(空格分隔):pythonuint8在此输入正文8位的无符号整形数据取值范围从0到255一singed与unsigned的区别二float改变类型643264to32shape翻倍改变类型321632to16shape翻倍改变类型32float32tofloatshape还原float默认是float64改变类型float64intfloat64

大家好,又见面了,我是你们的朋友全栈君。

标签(空格分隔): python


uint8:在此输入正文8位的无符号整形数据,取值范围从0到255

一、singed与unsigned的区别

1).计算机最小的存储单位是“位” 也就是bit或binary digits,用来存放一个二进制数,即 0或1, 8个二进制位为一个字节Byte。

2).对于16-bit(16位)的计算机,int是以两个字节来储存的,而32-bit的计算机,则是以4个字节,即32个bit来储存的。

如果想要明白singed与unsigned的区别,除了这两个基本知识,还需要了解整数在计算机中的存储方式,以16-bit 计算机为例,定义 int a = 1, 那么a的存储方式用表格来表示

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

最左边的0是用来标记正负的,故signed 类型就是 − 2 15 − 1 → + 2 15 − 1 -2^{15-1} \to +2^{15-1} 2151+2151, unsigned 则是 0 → + 2 16 − 1 0 \to +2^{16}-1 0+2161.

二、float,

>>> import numpy as np
>>>
>>> a = np.array([0.213132, 1.032123, 2.000212])
>>> a
array([ 0.213132,  1.032123,  2.000212])
>>> a.dtype
dtype('float64')
>>> a.shape
(3,)

1.改变类型, 64 → 32 64 \to 32 6432 shape翻倍

>>> a.dtype = 'float32'
>>> a
array([ -1.16170272e+08,   1.58813190e+00,   3.15813966e+24,
         1.87901533e+00,   5.84719814e-16,   2.00002646e+00], dtype=float32)
>>> a.shape
(6,)

2.改变类型, 32 → 16 32 \to 16 3216 shape翻倍

>>> a.dtype = 'float16'
>>> a
array([ -9.47952271e-04,  -1.94531250e+01,   7.90625000e+00,
         1.94824219e+00,   1.49169922e-01,   2.12600000e+03,
        -5.45382500e-05,   1.98437500e+00,  -1.43647194e-04,
         2.40478516e-02,   6.61611557e-06,   2.00000000e+00], dtype=float16)
>>> a.shape
(12,)
>>>

3.改变类型, 32 → f l o a t 32 \to float 32float shape还原, float默认是float64

>>> a.shape
(12,)
>>> a.dtype = 'float'
>>> a
array([ 0.213132,  1.032123,  2.000212])
>>> a.shape
(3,)
>>>

4.改变类型, f l o a t 64 → i n t float64 \to int float64int

>>> a.dtype = 'int'
>>> a
array([-857893948, 1070286824, 1747398854, 1072726931,  640190645,
       1073741935])
>>> a.shape
(6,)
>>>

5.改变类型, i n t → i n t 32 → i n t 16 → i n t 8 int \to int32 \to int16 \to int8 intint32int16int8

>>> a.dtype = 'int32'
>>> a
array([-857893948, 1070286824, 1747398854, 1072726931,  640190645,
       1073741935])
>>> a.shape
(6,)
>>>
>>> a.dtype = 'int16'
>>> a
array([-27708, -13091,  18408,  16331,  12486,  26663, -31853,  16368,
       -30539,   9768,    111,  16384], dtype=int16)
>>> a.shape
(12,)
>>>
>>>
>>> a.dtype = 'int8'
>>> a
array([ -60, -109,  -35,  -52,  -24,   71,  -53,   63,  -58,   48,   39,
        104, -109, -125,  -16,   63,  -75, -120,   40,   38,  111,    0,
          0,   64], dtype=int8)
>>> a.shape
(24,)
>>>

6.改变类型, i n t 8 → i n t int8 \to int int8int 默认是int32

>>> a.dtype = 'int'
>>> a.shape
(6,)
>>> a
array([-857893948, 1070286824, 1747398854, 1072726931,  640190645,
       1073741935])
>>>

三、看看数据转换 astype等知识

1、向下取整

向下取整直接用内建的 int() 函数即可:

a = 3.75
int(a)
3

2、四舍五入

对数字进行四舍五入用 round() 函数:


>>>round(3.25); round(4.85)
3.0
5.0

3、向上取整

向上取整需要用到 math 模块中的 ceil() 方法:


>>>import math
>>>math.ceil(3.25)
4.0
>>>math.ceil(3.75)
4.0
>>>math.ceil(4.85)
5.0

4、分别取整数部分和小数部分

有时候我们可能需要分别获取整数部分和小数部分,这时可以用 math 模块中的 modf()
方法,该方法返回一个包含小数部分和整数部分的元组:

>>>import math
>>>math.modf(3.25)
(0.25, 3.0)
>>>math.modf(3.75)
(0.75, 3.0)
>>>math.modf(4.2)
(0.20000000000000018, 4.0)

– 接下来是重点,astype

很多时候我们用numpy从文本文件读取数据作为numpy的数组,默认的dtype是float64

但是有些场合我们希望有些数据列作为整数, 如果直接改dtype='int'的话,就会出错!原因如上,数组长度翻倍了!!!

怎么办? 用astype!

>>> b = np.array([1.23,12.201,123.1])
>>>
>>> b
array([   1.23 ,   12.201,  123.1  ])
>>> b.dtype
dtype('float64')
>>> c = b.astype(int)
>>> c
array([  1,  12, 123])
>>> c.dtype
dtype('int32')
>>>

好像还没讲uint类型,其实就是unsigned int嘛,看‘一’部分

>>>
>>> b = np.array([1.23,12.201,123.1])
>>>
>>> b.astype('uint8')
array([  1,  12, 123], dtype=uint8)
>>> b.astype('uint16')
array([  1,  12, 123], dtype=uint16)
>>> b.astype('uint32')
array([  1,  12, 123], dtype=uint32)
>>> b.astype('uint64')
array([  1,  12, 123], dtype=uint64)
>>>
>>>
>>>
>>>
>>> b = np.array([-1.23,12.201,123.1])
>>>
>>> b.astype('uint8')
array([255,  12, 123], dtype=uint8)
>>> b.astype('uint16')
array([65535,    12,   123], dtype=uint16)
>>> b.astype('uint32')
array([4294967295,         12,        123], dtype=uint32)
>>> b.astype('uint64')
array([18446744073709551615,                   12,                  123], dtype=uint64)
>>>

转载和疑问声明

如果你有什么疑问或者想要转载,没有允许是不能转载的哈
赞赏一下能不能转?哈哈,联系我啊,我告诉你呢 ~~
欢迎联系我哈,我会给大家慢慢解答啦~~~怎么联系我? 笨啊~ ~~ 你留言也行

你关注微信公众号1.机器学习算法工程师:2.或者扫那个二维码,后台发送 “我要找朕”,联系我也行啦!


数据格式汇总及type, astype, dtype区别「建议收藏」

(爱心.gif) 么么哒 ~么么哒 ~么么哒
码字不易啊啊啊,如果你觉得本文有帮助,三毛也是爱!

我祝各位帅哥,和美女,你们永远十八岁,嗨嘿嘿~~~


数据格式汇总及type, astype, dtype区别「建议收藏」
数据格式汇总及type, astype, dtype区别「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/131938.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • RabbitMQ 七战 Kafka,差异立现!

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 译者丨王欢,Golang后端工程师,DockOne社区译者 来源 | 分布式实验室(ID:dockeron…

  • 怎么防止sql注入攻击_网络安全的威胁

    怎么防止sql注入攻击_网络安全的威胁SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。个人理解:用户通过浏览器访问网站,基本上很多的网站的数据都是保留在数据库中的,客户通过输入特定的数据特征利用网站开发者设计好的SQL查询语句进行对数据库中的数据进行查询,从而返回用户需要的数据,通过浏览器显示呈现到用户,达成整个的交付过程。而SQL攻击就是在用户输入数…

    2022年10月26日
  • 你是一个合格的孩子吗?

    你是一个合格的孩子吗?最近在优酷上看到两个视频感触很深,拿来和大家一起分享一下。第一个是《天堂的午餐》  视频虽然只有短短的六分钟,也许会改变你的一生,故事讲了一个儿子为辛苦了一辈子的母亲做了一顿丰盛的午餐,但这顿午餐却成了母亲的天堂的午餐,就在母亲到家准备进家门时突然晕倒了,及时送到医院后抢救无效去世,母亲没有吃上儿子给她做的饭就去世了,视频中母亲问:我多会能吃上一顿你给我做的饭呢?儿子回答说…

  • php开发微信公众号步骤_PHP接口

    php开发微信公众号步骤_PHP接口最近在帮别人做个小项目,要用到微信公众平台,虽然以前也做过微信开发,但是没有深入的自己去搞一套微信开发的东西(也搞不了,那时候没能力,也弄不到微信公众号),最近开始搞,第一步就是配置微信基本配置(账号注册我就不赘述了)。我们首先要启用服务器配置,并填写URL,token,AESKey,加密方式那么URL怎么填写呢?网上有很多种教程,最靠谱的一种是去新浪云注册个免费的PHP服务器,

  • CSS calc()函数与单位vh 常见height:100vh[通俗易懂]

    CSS calc()函数与单位vh 常见height:100vh[通俗易懂]calc()函数属于CSS3版本内容,用于动态计算长度值。例如:width:calc(100%-10px);需要注意的是,运算符前后都需要保留一个空格。calc()函数支持”+”,”-“,”*”,”/”运算;举例,给一个div动态设置宽度如下:#divBox{position:absolute;left:50px;width:calc(100%-100p…

  • 卡巴斯基中国官方技术论坛即将开放[通俗易懂]

    卡巴斯基中国官方技术论坛即将开放[通俗易懂]卡巴斯基筹备已久的官方技术论坛近期将上线,将给众多卡巴斯基粉丝和技术爱好者提供一个沟通交流的平台。早前,卡巴斯基顺应本地化服务策略,开通400技术支持热线。在艾瑞最新的一份报告中,国内安全软件市场三强的排名改头换面,卡巴斯基…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号