当前位置: 首页 > article >正文

HoRain云--NumPy数据类型全解析:高效计算的关键

HoRain云小助手个人主页 个人专栏: 《Linux 系列教程》《c语言教程》⛺️生活的理想就是为了理想的生活!⛳️ 推荐前些天发现了一个超棒的服务器购买网站性价比超高大内存超划算忍不住分享一下给大家。点击跳转到网站。专栏介绍专栏名称专栏介绍《C语言》本专栏主要撰写C干货内容和编程技巧让大家从底层了解C把更多的知识由抽象到简单通俗易懂。《网络协议》本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘一起解密网络协议在运行中协议的基本运行机制《docker容器精解篇》全面深入解析 docker 容器从基础到进阶涵盖原理、操作、实践案例助您精通 docker。《linux系列》本专栏主要撰写Linux干货内容从基础到进阶知识由抽象到简单通俗易懂帮你从新手小白到扫地僧。《python 系列》本专栏着重撰写Python相关的干货内容与编程技巧助力大家从底层去认识Python将更多复杂的知识由抽象转化为简单易懂的内容。《试题库》本专栏主要是发布一些考试和练习题库涵盖软考、HCIE、HRCE、CCNA等目录⛳️ 推荐专栏介绍基本数据类型1. 整数类型2. 浮点类型3. 复数类型4. 布尔类型5. 字符串类型数据类型操作1. 查看和修改数据类型2. 创建时指定数据类型3. 数据类型转换规则特殊数据类型1. 结构化数据类型记录数组2. 日期时间类型类型字符码数据类型信息内存优化技巧1. 选择合适的数据类型2. 查看内存使用总结NumPy 的核心优势之一是其强大的数据类型系统这确保了数值计算的高效性和内存使用的优化。NumPy 数组ndarray是同质的即所有元素必须是相同的数据类型。基本数据类型1.整数类型类型描述范围int8/uint88位有符号/无符号整数-128~127 / 0~255int16/uint1616位有符号/无符号整数-32768~32767 / 0~65535int32/uint3232位有符号/无符号整数-2³¹~2³¹-1 / 0~2³²-1int64/uint6464位有符号/无符号整数-2⁶³~2⁶³-1 / 0~2⁶⁴-1int_/uint平台默认整数通常为int64取决于平台import numpy as np # 指定整数类型 arr np.array([1, 2, 3], dtypenp.int32) print(arr.dtype) # int32 # 创建特定类型的零数组 zeros_int8 np.zeros(5, dtypenp.int8) print(zeros_int8.dtype) # int82.浮点类型类型描述精度float16半精度浮点数约5位小数float32单精度浮点数约7位小数float64双精度浮点数默认约15位小数float128扩展精度浮点数某些平台更高精度float_平台默认浮点数通常为float64# 默认浮点类型是float64 arr_float np.array([1.0, 2.0, 3.0]) print(arr_float.dtype) # float64 # 指定单精度 arr_float32 np.array([1.0, 2.0, 3.0], dtypenp.float32) print(arr_float32.dtype) # float32 # 半精度示例 arr_float16 np.array([1.0, 2.0], dtypenp.float16) print(arr_float16.dtype) # float163.复数类型类型描述complex64由两个float32组成实部和虚部complex128由两个float64组成默认complex256由两个float128组成complex_平台默认复数类型# 复数数组 arr_complex np.array([12j, 34j]) print(arr_complex.dtype) # complex128 # 指定单精度复数 arr_complex64 np.array([12j, 34j], dtypenp.complex64) print(arr_complex64.dtype) # complex644.布尔类型# 布尔类型 arr_bool np.array([True, False, True]) print(arr_bool.dtype) # bool # 注意bool在内存中占1个字节 print(arr_bool.itemsize) # 15.字符串类型# 固定长度的字符串 arr_str np.array([hello, world]) print(arr_str.dtype) # U5 (长度为5的Unicode字符串) # 指定最大长度 arr_str_fixed np.array([abc, defg], dtypeS10) # 最大10字节 print(arr_str_fixed.dtype) # |S10 # Unicode字符串 arr_unicode np.array([你好, 世界], dtypeU10) print(arr_unicode.dtype) # U10数据类型操作1.查看和修改数据类型# 查看数据类型 arr np.array([1, 2, 3]) print(arr.dtype) # int64 (默认) # 修改数据类型创建新数组 arr_float arr.astype(np.float32) print(arr_float.dtype) # float32 print(arr_float) # [1. 2. 3.] # astype会创建新数组不会改变原数组 print(arr.dtype) # int642.创建时指定数据类型# 创建数组时指定dtype arr1 np.array([1, 2, 3], dtypenp.int16) arr2 np.array([1.0, 2.0, 3.0], dtypenp.float32) arr3 np.array([True, False], dtypebool)3.数据类型转换规则# 混合类型会自动提升 arr np.array([1, 2.5, 3]) # 包含整数和浮点数 print(arr.dtype) # float64 arr2 np.array([1, 23j, 3]) # 包含整数和复数 print(arr2.dtype) # complex128特殊数据类型1.结构化数据类型记录数组# 定义结构类型 dt np.dtype([ (name, U20), # 20字符的Unicode字符串 (age, i4), # 32位整数 (height, f8), # 64位浮点数 (weight, f8) ]) # 创建结构化数组 people np.array([ (Alice, 25, 1.65, 55.5), (Bob, 30, 1.80, 75.0), (Charlie, 35, 1.75, 80.2) ], dtypedt) print(people) # 输出: [(Alice, 25, 1.65, 55.5) (Bob, 30, 1.8 , 75. ) (Charlie, 35, 1.75, 80.2)] # 访问字段 print(people[name]) # [Alice Bob Charlie] print(people[age]) # [25 30 35] print(people[0]) # (Alice, 25, 1.65, 55.5) print(people[0][name]) # Alice2.日期时间类型# 日期时间 dates np.array([2024-01-01, 2024-01-02], dtypedatetime64[D]) print(dates.dtype) # datetime64[D] # 时间差 deltas np.array([1, 2, 3], dtypetimedelta64[D]) print(deltas.dtype) # timedelta64[D] # 运算 tomorrow dates[0] np.timedelta64(1, D) print(tomorrow) # 2024-01-02类型字符码NumPy 使用单字符代码表示数据类型这在某些函数中很常见字符对应类型b布尔型i有符号整数u无符号整数f浮点数c复数S/a字节字符串UUnicode字符串OPython对象M日期时间m时间差# 使用字符码 arr1 np.array([1, 2, 3], dtypei4) # 32位整数 arr2 np.array([1.0, 2.0], dtypef8) # 64位浮点数 arr3 np.array([a, b], dtypeU1) # 1字符Unicode数据类型信息arr np.array([1, 2, 3], dtypenp.int32) # 获取类型信息 print(arr.dtype) # int32 print(arr.dtype.name) # int32 print(arr.dtype.kind) # i (整数类型) print(arr.dtype.itemsize) # 4 (字节数) print(arr.dtype.type) # class numpy.int32 # 类型边界 print(np.iinfo(np.int32).min) # -2147483648 print(np.iinfo(np.int32).max) # 2147483647 print(np.finfo(np.float32).eps) # 机器精度内存优化技巧1.选择合适的数据类型# 不必要的大类型浪费内存 arr_bad np.ones((1000, 1000), dtypenp.float64) # 8MB arr_good np.ones((1000, 1000), dtypenp.float32) # 4MB (节省一半) # 对于布尔值使用bool类型 bool_arr np.array([True, False, True], dtypebool) # 1字节/元素2.查看内存使用arr np.ones((100, 100), dtypenp.float64) print(arr.nbytes) # 80000 字节 (100 * 100 * 8) print(arr.size * arr.itemsize) # 同样计算字节数总结同质性NumPy 数组所有元素类型必须相同明确指定创建数组时最好明确指定dtype避免意外类型提升内存意识选择满足需求的最小类型特别是处理大型数组时类型安全使用astype()进行显式转换注意精度损失灵活性结构化数组允许创建类似数据库表的复合数据类型NumPy 的类型系统是其高性能计算的基础理解并正确使用这些类型是有效使用 NumPy 的关键。❤️❤️❤️本人水平有限如有纰漏欢迎各位大佬评论批评指正如果觉得这篇文对你有帮助的话也请给个点赞、收藏下吧非常感谢! Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧

相关文章:

HoRain云--NumPy数据类型全解析:高效计算的关键

🎬 HoRain云小助手:个人主页 🔥 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!…...

Linux开发学习第七天——虚拟内存和物理内存

一、虚拟内存1.概念内核给进程编造的独立地址空间,每个进程都以为自己独占内存。它们靠 MMU(硬件) 页表(内核) 做映射。每个进程都独有一份,就是之前提到的进程的内存模型。2.作用隔离进程:A 进…...

使用Proteus仿真结合RWKV7-1.5B-G1A:模拟智能硬件对话系统

使用Proteus仿真结合RWKV7-1.5B-G1A:模拟智能硬件对话系统 1. 项目概述 在物联网和智能硬件快速发展的今天,如何让硬件设备具备更自然的交互能力成为一个有趣的研究方向。本文将展示一个跨学科创意项目:在Proteus仿真环境中搭建包含MCU和外…...

本科好就业的专业有哪些

本科好就业的专业主要集中在工科和医学领域,尤其以信息技术、智能制造、新能源、医疗健康等国家战略扶持或产业刚需方向的专业为佳。‌‌ 一、工科类专业 工科专业因技术硬核、对接产业紧密,在就业率和薪资上普遍表现突出。‌‌ ‌1、计算机与信息技术类…...

DeepSeek-OCR-2惊艳效果展示:多栏/斜拍/模糊PDF精准识别对比图集

DeepSeek-OCR-2惊艳效果展示:多栏/斜拍/模糊PDF精准识别对比图集 1. 从机械扫描到智能理解:OCR技术的革命性突破 如果你曾经尝试过从PDF文档中提取文字,特别是那些排版复杂、图片模糊或者拍摄角度倾斜的文档,你一定会理解那种挫…...

5分钟打造个性化Windows桌面:RoundedTB任务栏美化终极指南

5分钟打造个性化Windows桌面:RoundedTB任务栏美化终极指南 【免费下载链接】RoundedTB Add margins, rounded corners and segments to your taskbars! 项目地址: https://gitcode.com/gh_mirrors/ro/RoundedTB 厌倦了Windows千篇一律的方块任务栏&#xff1…...

Z-Image-GGUF实战案例:一步步教你画出电影级风景与动漫风格人物

Z-Image-GGUF实战案例:一步步教你画出电影级风景与动漫风格人物 1. 从零到一:你的第一个AI绘画作品 想不想体验一下,只用几句话就让AI为你画出一幅电影海报级别的风景,或者一个充满故事感的动漫角色?今天&#xff0c…...

OpenMP vs C++ 线程池:到底该用谁?

在 C 多线程并行编程中,OpenMP 和线程池是最常用的两种方案。很多开发者都会陷入困惑:同样是实现多线程加速,到底该选 OpenMP 还是 C 线程池?有人觉得 OpenMP 一行代码就能并行,简单高效;也有人偏爱线程池的…...

lumenpnp校准–连接至 LumenPnP 并配置底部相机

总目录:https://www.xlzyw.top/archives/295 既然 OpenPnP 已安装并且 LumenPnP 配置文件已放置在隐藏的系统文件夹中,OpenPnP 可以使用一些基本的预配置设置启动了。下一步是连接您的 LumenPnP 并熟悉 OpenPnP 的用户界面。。 然后,我们将安…...

Python内存管理正在消失?——2026年三大趋势预警:Rust内存安全层集成、WASI沙箱化运行时、实时GC延迟<50μs(仅限首批Early Adopter)

第一章:Python智能体内存管理策略2026最新趋势随着大语言模型驱动的Python智能体(Agent)在生产环境中的深度部署,内存管理已从传统CPython引用计数循环检测机制,演进为面向LLM推理生命周期的多维协同治理范式。2026年主…...

国内开发者福音:手把手教你用微软Authenticator搞定GitHub 2FA验证(附Recovery Codes保存指南)

国内开发者实战指南:微软Authenticator无缝对接GitHub双重验证 GitHub作为全球最大的代码托管平台,近期强制要求所有开发者账户启用双重身份验证(2FA)。对于国内开发者而言,这一安全措施的实施却面临着诸多实际困难——…...

图文翻译神器translategemma-12b-it:Ollama一键部署,支持55种语言

图文翻译神器translategemma-12b-it:Ollama一键部署,支持55种语言 还在为看不懂外文资料、菜单、说明书而烦恼吗?或者,你是否需要快速将一份产品手册、技术文档里的图片内容翻译成中文?今天,我要介绍一个能…...

【记录】LLM|解答家人对AI大模型工具选取的一些疑问

写于2026年3月26日晚上。 作为一个相关研究的研究生,我觉得有必要针对还在读高中的同学(实则是针对亲戚)写一点大模型的使用简明教程。这里并不打算废话太多关于所谓提示词工程或者是AI焦虑类型的内容,只是想从一个长辈的角度尽量…...

Codeforces Round 1082 (Div. 2)2202

Submission #368219050 - Codeforces A. Parkour Design 思路:第一个操作第三个操作两步第二个操作,所以实际上只需要考虑y坐标的变化,然后看一下x的差值是否能整除3就可以了 B. ABAB Construction 思路:奇数长度开头一定是a或者…...

C++ 虚表与多态:从源码到汇编的逐步解析

本文基于代码随想录最强八股文给出的 C 源码与对应的 x86-64(System V ABI 风格)反汇编,按“程序运行流程”一步步解释: 对象内存里 vptr(虚表指针) 在哪构造函数如何 写入 vptrAnimal* 指针如何通过 vtabl…...

基于Matlab的IMU姿态解算之旅:四元数姿态的奇妙融合

基于matlab的IMU姿态解算,姿态类型为四元数;角速度和线加速度的类型为三维向量。 IMU全称是惯性导航系统,主要元件有陀螺仪、加速度计和磁力计。 其中陀螺仪可以得到各个轴的加速度,而加速度计能得到x,y,z方向的加速度…...

《荣耀出征:奇迹MU》安徽游昕官方正版下载:12区开服前瞻 全玩法解析与新手指南

《荣耀出征》奇迹mu手游是安徽游昕运营的手机游戏。由三天手游官网负责游戏攻略、资讯、礼包发放。2026年3月官方授权渠道(官方最新)游戏官方主站为985.yxnds.com,由安徽游昕运营,为游戏官方认证的信息与下载入口,可查…...

C++笔记 缺省值 函数重载 名字空间域(基础核心)

本文为C基础核心知识点笔记,聚焦「缺省值」「函数重载(概念)」「名字空间域」三大高频基础考点,语言通俗、重点突出,兼顾入门理解和考试记忆,适合新手入门、作业复习及GitHub归档。一、缺省值(默…...

OpenClaw配置加密:GLM-4.7-Flash模型凭证的安全存储方案

OpenClaw配置加密:GLM-4.7-Flash模型凭证的安全存储方案 1. 为什么需要保护模型凭证? 上周我在调试OpenClaw对接GLM-4-7-Flash模型时,不小心把包含API Key的配置文件上传到了GitHub。虽然及时发现并撤销,但这个教训让我意识到&a…...

别再只盯着通用数据集了!盘点2024年那些能直接拿来微调LLaMA、ChatGLM的医学问答数据集

2024医学大模型实战:精选可直接微调的问答数据集与应用指南 当开源大模型如LLaMA-3、ChatGLM3和Gemma在通用领域展现出惊人潜力后,医疗健康领域正成为下一个技术落地的黄金赛道。但许多工程师在兴奋地下载完模型权重后,却卡在了最关键的一环—…...

NaViL-9B效果实测:10类常见图片(图表/证件/包装/截图)理解准确率

NaViL-9B效果实测:10类常见图片理解准确率 1. 模型能力概览 NaViL-9B作为原生多模态大语言模型,在图片理解方面展现出令人印象深刻的能力。不同于传统视觉模型,它不仅能识别图片内容,还能结合上下文进行智能推理和描述。 1.1 核…...

D3KeyHelper实战指南:从入门到精通的认知跃迁

D3KeyHelper实战指南:从入门到精通的认知跃迁 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper D3KeyHelper是一款专为《暗黑破坏神3》设计…...

3个终极窗口隐藏技巧:如何用Boss-Key打造你的数字隐身衣

3个终极窗口隐藏技巧:如何用Boss-Key打造你的数字隐身衣 【免费下载链接】Boss-Key 老板来了?快用Boss-Key老板键一键隐藏静音当前窗口!上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 你有没有经历过这样的…...

FPGA实战避坑:手把手教你用Verilog搞定跨时钟域信号传输(附同步/异步FIFO完整代码)

FPGA实战避坑:手把手教你用Verilog搞定跨时钟域信号传输 第一次在FPGA项目里遇到跨时钟域问题,我盯着屏幕上那些随机跳变的数据波形,整整三天没想明白问题出在哪。当时我正在做一个工业传感器数据采集系统,处理器接口跑在100MHz&a…...

电路原理与情感关系的电子工程解读

电子工程视角下的电路与人生哲学1. 电路元件与情感关系的类比分析1.1 信号放大器与初恋心理初恋阶段的心理状态类似于简单的信号放大器系统。在这个模型中,情感输入信号被高度放大,微小的快乐信号能产生极大的幸福感输出,同样微小的伤害信号也…...

飞书机器人接入OpenClaw:Qwen3.5-4B-Claude模型对话触发方案

飞书机器人接入OpenClaw:Qwen3.5-4B-Claude模型对话触发方案 1. 为什么选择飞书OpenClaw的技术问答方案 去年团队内部开始频繁出现一个现象:每当新人遇到技术问题,总会在飞书群里反复老员工。简单的环境配置问题往往需要截图、录屏、文字描…...

Linux驱动工程师面试技术要点与开发实践

Linux驱动工程师面试技术要点解析 1. 面试技术问题深度剖析 1.1 基础驱动开发能力考察 面试中关于驱动开发的基础问题主要考察候选人对底层通信协议的理解程度。I2C总线作为嵌入式系统中最常用的通信接口之一,其起始信号(START Condition)的…...

03-LlamaIndex节点解析:文本分块策略与NodeParser深度应用

03-LlamaIndex节点解析:文本分块策略与NodeParser深度应用 系列导航 01 核心概念与RAG处理管线02 多源数据加载与Data Connectors03 文本分块策略与NodeParser ← 当前04 向量存储与混合索引策略05 Retriever、Query Engine与Chat Engine06 Agent与Workflow编排07 多…...

终极桌面伴侣BongoCat:让键盘鼠标操作变得生动有趣的虚拟猫咪

终极桌面伴侣BongoCat:让键盘鼠标操作变得生动有趣的虚拟猫咪 【免费下载链接】BongoCat 让呆萌可爱的 Bongo Cat 陪伴你的键盘敲击与鼠标操作,每一次输入都充满趣味与活力! 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat …...

3步解锁Yuedu书源:终结小说断更烦恼,实现阅读自由

3步解锁Yuedu书源:终结小说断更烦恼,实现阅读自由 【免费下载链接】Yuedu 📚「阅读」APP 精品书源(网络小说) 项目地址: https://gitcode.com/gh_mirrors/yu/Yuedu 你是否经历过这样的时刻:熬夜追更…...