Python:Python进阶:Python整数与 Numpy的数据溢出

news2024/11/15 11:00:06

numpy数据溢出

  • 1.python 3 的整数上限和 python 2 的整数上限
    • 1.1 python 2的整数范围
    • 1.2 python 3 的整数范围
  • 2. numpy数值表示
  • 2.1 那么numpy支持的数据类型和 python有什么不同了
    • 2.2 如何解决整数溢出问题
  • 总结

  1. 实验一:使用 numpy库来表示正数
import numpy as np
E = [1,100000,100001,100002,100003,100004,100005,100006,100007,100008,100009]
F = [2,100010,100011,100012,100013,100014,100015,100016,100017,100018,100019]

G = [3,208378,144703,73205,52363,100014,196058,204444,20,5035,1458]
H = [4,399719,15736,7589,258746,30968,1457820,211272,1402,103476,1458]

# 使用numpy.array 方法将 tuple的数据转换为 ndarray
Q = np.array([E,F])
W = np.array([G,H])
# 将数组对应的序列相乘
print(W*Q)

结果打印的值如下:
在这里插入图片描述
我们可以看到,两个正整数数组里面的数值相乘,竟然会出现负数(如:E[1] * G[1] 100000*208378)

  1. 实验二 : 使用python 直接表示正数
    发现 100000*208378又是可以正常通过 python解释器的。
# 使用 python 来表示整数
print(100000*208378)  # 打印结果:20837800000

是不是感到很无语!为什么同样的 数值 做乘法在 nump 库下会出现 负数(数据溢出) , 但是在 python下就是正常的了 ?
在开始讨论这个话题之前,我们先引出下面两个话题

  • python 3 中的整数上限是多少 ? python 2 的了 ?
  • Numpy 中的整数上限是多少 ?整数溢出该怎么办 ?

1.python 3 的整数上限和 python 2 的整数上限

1.1 python 2的整数范围

  • 一种是短整数,也即常说的整数,用 int 表示,有个内置函数 int() 大小有限,可通过 sys.maxint() 查看。
  • 一种是长整数,即大小无限的整数,用 long 表示,有个内置函数 long() 。写法在数字后面加 大写字母 L 或小写 字母 l 如 : 1000L 。
  • 当一个整数超出短整数范围时,它会自动采用长整数来表示。

1.2 python 3 的整数范围

  1. python 3 情况就没有 python 2 那么复杂,它仅有一种内置的整数,表示为 int , 形式上是 python 2 的短整数,但实际上它能表示的范围无限,行为上更像长整数,无论多大的数结尾均不需要加 字母 L 做区分。
  2. 也就是P ython 3 中的整数无上限,只要不超出内存空间即可。这就解释了 前文中 直接打印两数相乘,为什么结果会是正确的。

2. numpy数值表示

numpy 由于它是 C语言实现的,在整数表示上,用的是C语言的规则,也就是会区分 整数和长整数,下面我们查看下
在这里插入图片描述
这也就是说: numpy 默认的整数 int 是 32位,表示的范围 : -2147483648 ~ 2147483647

2.1 那么numpy支持的数据类型和 python有什么不同了

首先:Numpy 支持的数据类型要比 python的多,相互间的区分界限有很多样:数据来源
Numpy数据类型
在这里插入图片描述

2.2 如何解决整数溢出问题

我们可以通过指定 dtype 的方式来解决 ,fllowing the code

# 使用 python 来表示整数
print(100000*208378)

import numpy as np
p = [100000]
q = [500000]

# 一个溢出的例子
a = np.array(p)
b = np.array(q)
print(a*b) # 产生溢出,结果就是个和奇怪的值

# 如何解决
c = np.array(p,dtype = 'int64')
d = np.array(q,dtype = 'int64')
print(c*d)  # 没有溢出:正常打印 50000000000

在这里插入图片描述

总结

  1. Python 3 极大的简化了整数的表示,效果可描述为:整数就只有一种整数 int , 没有其他类型的整数 (long , int8 , int64 )之类的
  2. Numpy 中的整数类型对应于 C语言的数据类型,每种“整数”都有自己的空间,要解决数据溢出的问题,需要指定更大的数据类型 dtype

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/498758.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

redis(4)

1)使用StringTemplateRedis操作String类型 1)判断redis中是否拥有key所对应的值,如果有返回true,没有那么直接返回false redisTemplate.hasKey(key); 2)如果redis中有key那么直接取出key所对应的值 redisTemplate.opsForValue().get(key) 3)删除单个key值…

2023.05.07 学习周报

文章目录 摘要文献阅读1.题目2.现存问题和解决方法3.本文贡献及相关工作4.GRU5.模型5.1 SESSION-PARALLEL MINI-BATCHES5.2 SAMPLING ON THE OUTPUT5.3 RANKING LOSS 6.实验6.1 准备6.2 基线6.3 优化6.4 结果 7.结论 数学建模1.综合评价模型的一般步骤2.层次分析法3.主成分分析…

【Java】中的多线程线程锁

多线程 文章目录 多线程线程的创建和启动sleep()stop() 线程的休眠和中断线程的优先级线程的礼让和加入yield()stop() 线程锁和线程同步synchronized 关键字 死锁概念 wait & notify methodThreadLocal的使用定时器 Timer守护线程再谈集合类parallelStreamforEachOrdered()…

怎么将三张图片合成一张图片?

怎么将三张图片合成一张图片?遇到这个问题,我们其实有很多方法来处理。我们首当其冲想到的是其中最常见的,可以使用我们手机的APP来处理,比如某秀秀等。但是此方法比较适合于尺寸比较小的图片进行合并,如果图片比较大的…

Dockerfile创建镜像文件

Dockerfile Docker镜像原理 Linux文件系统有bootfs和rootfs两部分组成 Docker镜像由特殊文件系统叠加 最底端bootfs,使用宿主机bootfs 第二次时rootfs,被称为基础镜像 向上可以叠加其他镜像文件 同一文件系统能将多层整合成一层,隐藏了多层存在 镜像可以放置…

智能优化算法:鱼鹰优化算法-附代码

智能优化算法:鱼鹰优化算法 文章目录 智能优化算法:鱼鹰优化算法1. 鱼鹰优化算法1.1 初始化1.2 阶段一:定位和捕鱼(探索阶段)1.3 阶段二:把鱼带到合适的位置(开发阶段) 2.实验结果3.…

RISC-V U-Boot 启动 Linux 内核的参数

RISC-V U-Boot 启动 Linux 内核的参数 U-Boot (the Universal Boot Loader简写U-Boot) flyfish U-Boot 启动Linux内核的参数举例说明 RISC-V U-Boot 启动 Linux 内核的参数方式一 文本操作earlyprintksunxi-uart,0x02500000clk_ignore_unusedconsolettyS0,115200init/sbin/i…

go-resiliency源码解析之-batcher

go-resiliency源码解析之-batcher 源代码地址 : https://github.com/eapache/go-resiliency/blob/master/batcher/batcher.go 1.batcher定义 创建一个batch对象需要2个参数: Timeout:超时,这是一个batch对象收集输入参数的时间。 work函数变量:在ti…

使用Jumpserver+Frp集中管理远程内网服务器

我们设想这样一种情况,我们是一家小公司,在全国有几个小分支办公机构,每个机构有一台服务器,由于公司财务紧张,买不起专线,用的也是普通家用宽带,SD-WAN设备说实话也挺贵的,那么我们…

Docker部署MySQL主从复制架构

文章目录 1、准备工作2、下拉镜像,启动容器3、编辑 MySQL 主节点配置4、编辑 MySQL 从节点配置5、通过 Navicat 配置主节点6、通过 Navicat 配置从节点7、最终测试 1、准备工作 云服务器(虚拟机也可以)安装Docker,参考该文章第1小…

Telnet 【实验】

1 什么是Telnet? Telnet是进行远程登录的标准协议,它是当今Internet上应用最广泛的协议之一。它把用户正在使用的终端或计算机变成网络某一远程主机的仿真终端,使得用户可以方便地使用远程主机上的软、硬件资源。 为什么需要telnet&#xf…

python自动化程序操作浏览器在后台访问网站

目录 1、简介2、详细步骤3、驱动3.1、ChromeDriver3.2、GeckoDriver3.3、Microsoft WebDriver3.4、下载链接 4、完整代码 ⭐在当今信息化的时代,访问网站已经成为人们生活中必不可少的一部分。 1、简介 对于某些需要批量访问网站的任务,手动访问既费时又…

Java - Thread、ThreadLocal、ThreadLocalMap

一、概念 用处每个线程需要持有自己单独的数据,数据在同线程中被多个地方共享,但多线程中不共享。原理创建 ThreadLocal 对象用来存取值,操作的是 CurrentThread 里的 ThreadLocalMap,由于每个 Thread 中都有自己的 ThreadLocalM…

Codeforces Round 870 (Div. 2)

Codeforces Round 870 (Div. 2) A. Trust Nobody 题意: 给你一个数组a,a[i]表示第i个人认为至少有a[i]个人说谎,请你找到正确的说谎人数 思路: 我们认为说谎人数有x人,那么数组a中大于x的元素都是说谎,…

rosbag相关操作

一些很好用的网站 时间戳在线转换网页 旋转矩阵、四元数、绕轴旋转、欧拉角在线转换网页 四元数、欧拉角可视化在线转换网页 一、按时间截取bag 使用如下代码&#xff1a; rosbag filter 原始包名.bag 截取后的包名.bag "t.to_sec() > 开始时间 and t.to_sec() <…

机器学习随记(3)— Softmax

Softmax 与sigmoid不同&#xff0c;softmax可以多个输出&#xff0c;每个输出以概率的形式表示。 或者 def my_softmax(z):ez np.exp(z) sm ez/np.sum(ez)return(sm) 1 损失函数Loss Softmax 相关的损失函数&#xff0c;即交叉熵损失&#xff1a; 2 成本函数Cos…

Vben Admin 自学记录 —— 路由跳转的基本使用及练习(持续更新中...)

路由 项目路由配置存放于 src/router/routes 下面。 src/router/routes/modules用于存放路由模块&#xff0c;在该目录下的文件会自动注册。 路由相关使用及概念 练习 —— 在之前table基础上&#xff0c;添加新增功能&#xff0c;点击新增按钮&#xff0c;跳转页面&#xf…

电脑中病毒了怎么修复、怎么办,计算机windows系统如何预防faust勒索病毒

随着科技技术的不断发展&#xff0c;计算机已经成为现代人工作和生活中的必备工具之一&#xff0c;同时衍生出的各种计算机病毒也越来越多。各种勒索家族的加密病毒程序不断升级&#xff0c;给我们的工作和生活带来了极大困扰&#xff0c;特别是最近爆发的一种新型计算机病毒—…

如何优化 yolov8 模型,压缩模型大小,部署到边缘设备上

在CV领域&#xff0c;YOLO系列目标检测模型是一种非常流行的深度学习网络模型。yolov8是23年1月10号开源的最新版本。虽然YOLOv8已经在精度和速度方面取得了显著的改进&#xff0c;但我们仍然可以从轻量化角度等很多方面来进一步优化该模型。 模型压缩&#xff1a;使用轻量化的…

华为EC6108V9A_RK3128_安卓4.4.4_卡刷固件包-内有教程-当贝纯净桌面

华为EC6108V9A_RK3128_安卓4.4.4_卡刷固件包-内有教程-当贝纯净桌面 特点&#xff1a; 1、适用于对应型号的电视盒子刷机&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、修改dns&#xff0c;三网通用&#xff1b; 4、大量精简内置的没用的软件&a…