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

2. NumPy数组属性详解:形状、维度与数据类型

NumPy数组属性详解:形状、维度与数据类型

在第一篇NumPy入门与数组创建中,我们学习了 NumPy 数组的创建方法。本篇将进一步深入,重点介绍 NumPy 数组的核心属性,包括 形状(shape)维度(ndim)元素总数(size)数据类型(dtype) 以及 内存占用。掌握这些属性,有助于我们理解数组结构,并在数据处理时快速定位问题。


1. 数组的基本属性

1.1 数组形状(shape)

shape 表示数组在每个维度上的长度,返回一个 元组

import numpy as npa = np.array([[1, 2, 3],[4, 5, 6]])
print(a.shape)   # (2, 3) -> 2行3列

1.2 数组维度(ndim)

ndim 表示数组的维数(轴的个数)。

print(a.ndim)   # 2 -> 二维数组
b = np.array([1, 2, 3, 4])
print(b.ndim)   # 1 -> 一维数组

1.3 元素总数(size)

size 表示数组中元素的总个数。

print(a.size)  # 6 -> 2*3

2. 数据类型(dtype)

NumPy 的数组必须是 同一种数据类型,这保证了存储与运算的高效性。

c = np.array([1, 2, 3], dtype=np.int32)
print(c.dtype)   # int32d = np.array([1.2, 3.4, 5.6])
print(d.dtype)   # float64

2.1 常见的数据类型

  • int32:32位整数
  • int64:64位整数(默认)
  • float32:单精度浮点数
  • float64:双精度浮点数(默认)
  • bool:布尔类型
  • complex:复数类型

2.2 类型转换(astype)

可以用 astype() 转换数据类型:

arr = np.array([1.5, 2.7, 3.9])
print(arr.astype(int))  # [1 2 3]

注意:类型转换会生成一个 新数组,原数组不会改变。


3. 数组的内存占用

3.1 itemsize

每个元素占用的字节数。

x = np.array([1, 2, 3], dtype=np.int32)
print(x.itemsize)  # 4 -> int32 占4字节

3.2 nbytes

整个数组占用的字节数。

print(x.nbytes)  # 12 -> 3个元素 * 4字节

4. *数组形状变换

在后续的 数组重塑与操作 中,reshaperavel 等方法非常常用。

a = np.arange(12)
print(a.shape)   # (12,)
b = a.reshape(3, 4)  # 变成3行4列
print(b.shape)   # (3, 4)

注意:reshape 不会改变原数组的数据,只是改变了“视图”的形状。


5. 小结

通过本篇学习,我们对 NumPy 数组的核心属性有了清晰认识。

形状(shape)描述了数组的行列结构,维度(ndim)揭示了数组的层级,元素总数(size)帮助我们快速把握规模,数据类型(dtype)确保存储与运算的统一性,而内存占用(itemsize 与 nbytes)则反映了数组的存储成本。

理解这些属性后,我们就能更清晰地掌握数组的结构,为后续的 索引与切片数学运算 打好基础。


上一篇:1. NumPy入门与数组创建
下一篇:3. NumPy 文件数据读写:高效的数据存储与加载

http://www.dtcms.com/a/394160.html

相关文章:

  • 【css特效】:实现背景色跟随图片相近色处理
  • vuex原理
  • 内存泄露怎么排查?
  • nginx配置防盗链入门
  • Kafka 多机房、跨集群复制、多租户、硬件与操作系统、全栈监控
  • leetcode136.只出现一次的数字
  • 力扣hot100:环形链表II(哈希算法与快慢指针法思路讲解)
  • 【算法】【Leetcode】【数学】统计1的个数 数位统计法
  • Kafka面试精讲 Day 21:Kafka Connect数据集成
  • MySQL 主从复制完整配置指南
  • 力扣每日一刷Day 23
  • LeetCode 53. 最大子数组和(四种解题思路)包含扩展返回最大和的数组
  • RTX 4090助力深度学习:从PyTorch到生产环境的完整实践指南——高效模型训练与优化策略
  • 23种设计模式之【桥接模式】-核心原理与 Java实践
  • LabVIEW手部运动机能实验
  • 669. 修剪二叉搜索树
  • 大QMT自动可转债申购
  • PolarCTF PWN 网络安全2023秋季个人挑战赛刷题
  • MySQL-day4_02(事务)
  • JUC(8)线程安全集合类
  • springboot中@EnableAsync有什么作用
  • Spark专题-第二部分:Spark SQL 入门(6)-算子介绍-Generate
  • C#练习题——Dictionary
  • Feign
  • SPA小说集之三《森林城市反甩锅战:ERP的权责边界》
  • Qt(模态对话框和非模态对话框)
  • 【无标题】物联网 frid卡控制
  • 【LLM LangChain】 模型绑定工具+调用工具(手动调用/LangGraph/AgentExecutor)+相关注意事项
  • 图神经网络(GNN)入门:用PyG库处理分子结构与社会网络
  • 【C++】编码表 STL简介:STL是什么,版本,六大组件,重要性以及学习方法总结