不二如是 发表于 2020-2-11 08:58:45

04 - 整数类型的迷思|【int8 -129变127?】

本帖最后由 不二如是 于 2020-2-12 07:58 编辑

上一讲我们知道了如何利用 Numpy 内置方法来处理数组,本节了解下 Numpy 中数据类型。

我们先利用 reshape 将一个一维列表转为 3*3 数组:

arr = np.array().reshape(3,3)
print(arr)
输出:


如果我随便将一项改成小数,例如 3.3:

arr = np.array().reshape(3,3)
print(arr)
输出:


所有项都变成浮点类型了。

记住:

**** Hidden Message *****
我们通过 dtype 方法来查看属性:

arr.dtype
输出:



有鱼油会问:“可不可以自己指定类型?”

可以,看这里:

arr2 = np.array(,dtype=np.int8).reshape(2,2)
print(arr2)
输出:


注意图中箭头所指处的“,”,有很多新手都会忘记~

看看 arr2 的类型:

print(arr2.dtype)
输出:


我们再来看一个好玩的操作:

arr3 = np.array(,dtype=np.int8).reshape(2,2)
print(arr3)
print(arr3.dtype)
输出:


2.9 取整就是 2 还可以理解,但 -129 为什么变成 127 了呢?

如果你知道字节转化,原码,反码,补码,符号位转换,你就知道答案...

但是由于本系列主讲 Numpy,就不做详细科普啦。

往下看有一个宏观层面上的解释。


Numpy的数据类型

Numpy 中整数(int)分为:有符号,无符号。

有符号包括:int8,int16,int32,int64

数字代表位数,8 代表 1 个字节,以此类推,字节越多,范围越大。

无符号包括:uint8,uint16,uint32,uint64

看一下各个字节的适用范围:


[*]int8(i1) 字节(-128 ~ 127)
[*]int16(i2) 16 位整数(-32768 ~ 32767)
[*]int32(i4) 32 位整数(-2147483648 ~ 2147483647)
[*]int64(i6) 64 位整数(-9223372036854775808 ~ 9223372036854775807)
[*]uint8(u1) 8 位无符号整数(0 ~ 255)
[*]uint16(u2) 16 位无符号整数(0 ~ 65535)
[*]uint32(u4) 32 位无符号整数(0 ~ 4294967295)
[*]uint64(u8) 64 位无符号整数(0 ~ 18446744073709551615)

其中()中的数字都代表字节,可以直接用简写(看下面代码)

int8 只能用于 -128 到 127,只能到 -128 。

-129 需要用到 int16 。

原码:1000000010000001

反码:1111111101111110

补码:1111111101111111

int16 强转为 int8 的话,补码左边 8 位就不要啦!

变为:01111111,对应的就是 127 。

这些如果你喜欢可以研究下,不难~

不想研究的话,大概知道是进制转换就可以。


小挖坑

那么有鱼油会问:怎么能转换数据类型呢?

Numpy 中的 astype 方法就可以转换类型。

代码:

arr3.astype('i2')
输出:


i2 就代表 int16,从结果看:不可以!

如果需要转,请在最开始就写成 int16 ,代码:

arr3 = np.array(,dtype=np.int16).reshape(2,2)
print(arr3)
print(arr3.dtype)
请自行测试。

下一讲我们来看浮点类型。

源码(随缘下载):



如果有收获,别忘了评分{:10_281:} :

http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif

如果想看更多,请订阅 淘专辑(传送门)(不喜欢更要订阅{:10_297:} )

TCY 发表于 2020-2-11 11:04:31

我爱 Numpy,我爱鱼C

zltzlt 发表于 2020-2-11 15:25:53

我爱 Numpy,我爱鱼 C

hrp 发表于 2020-2-11 15:32:12

我爱 Numpy,我爱鱼C

maxliu06 发表于 2020-2-26 17:31:56

我爱 Numpy,我爱鱼C

syf040916 发表于 2020-3-3 12:43:01

我爱 Numpy,我爱鱼C

tjuwlb 发表于 2020-3-7 20:49:20

我爱 Numpy,我爱鱼C

一个账号 发表于 2020-3-10 18:46:19

我爱 Numpy,我爱鱼C

听风夜雨 发表于 2020-3-30 13:14:12

我爱 Numpy,我爱鱼C

zsygsnbfsdm 发表于 2020-7-1 16:22:48

我爱 Numpy,我爱鱼C

半夜起床不睡觉 发表于 2020-7-28 14:02:00

我爱 Numpy,我爱鱼C

galaxy_zhao 发表于 2020-9-27 09:09:57

我爱 Numpy,我爱鱼C

jitianmoshen 发表于 2020-9-27 09:39:05

楼主辛苦了,谢谢楼主,感谢楼主分享,楼主好人一生平安!!!

随风拂柳 发表于 2021-6-21 15:41:40

我爱 Numpy,我爱鱼C

_2_ 发表于 2021-8-24 20:40:52

我爱 Numpy,我爱鱼C

hornwong 发表于 2021-8-24 20:56:36

我爱 Numpy,我爱鱼C

小羊趴在云朵上 发表于 2021-11-25 11:18:23

我爱 Numpy,我爱鱼C

Tikooy 发表于 2023-10-7 21:43:10

我爱 Numpy,我爱鱼C
页: [1]
查看完整版本: 04 - 整数类型的迷思|【int8 -129变127?】