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

NumPy 数组属性

NumPy 数组属性

文章目录

  • NumPy 数组属性
    • 一、基础属性
      • 1. shape​​ - 数组维度
      • 2. ​​ndim​​ - 数组维度数
      • 3. ​​size​​ - 元素总数
      • 4. dtype​​ - 数据类型
    • 二、内存相关属性​
      • 1. ​itemsize​​ - 单个元素字节大小
      • 2. nbytes​​ - 数组总内存占用
    • 三、高级属性
      • 1. ​​strides​​ - 跨距(每个维度前进的字节数)
      • 2. flags​​ - 内存布局信息
      • 3. T​​ - 转置视图(无需复制数据)
    • 四、特殊数组属性
      • 1. ​​real & imag​​ - 复数数组的实部/虚部
    • 五、属性修改技巧
      • 1. ​改变形状(不复制数据)
      • 2. 类型转换(创建新数组)
    • 六、属性关系总结
    • 七、实用场景

一、基础属性

1. shape​​ - 数组维度

import numpy as np
arr = np.array([[1,2,3], [4,5,6]])
print(arr.shape)  # 输出: (2, 3) → 2行3列

2. ​​ndim​​ - 数组维度数

print(arr.ndim)   # 输出: 2 → 二维数组

3. ​​size​​ - 元素总数

print(arr.size)   # 输出: 6 → 2×3=6个元素

4. dtype​​ - 数据类型

print(arr.dtype)  # 输出: int64 (默认整数类型)

二、内存相关属性​

1. ​itemsize​​ - 单个元素字节大小

float_arr = np.array([1.0, 2.0], dtype=np.float32)
print(float_arr.itemsize)  # 输出: 4 → 每个float32占4字节

2. nbytes​​ - 数组总内存占用

print(float_arr.nbytes)    # 输出: 8 → 2元素×4字节=8字节

三、高级属性

1. ​​strides​​ - 跨距(每个维度前进的字节数)

matrix = np.array([[0,1,2], [3,4,5]], dtype=np.int16)
print(matrix.strides)  # 输出: (6, 2) 
# 解释: 行间跨距=3元素×2字节=6字节,列间跨距=2字节

2. flags​​ - 内存布局信息

print(matrix.flags)
# 输出包含: 
#   C_CONTIGUOUS : True → C语言连续存储
#   F_CONTIGUOUS : False → 非Fortran连续存储

flags

3. T​​ - 转置视图(无需复制数据)

print(arr.T.shape)  # 输出: (3, 2)

四、特殊数组属性

1. ​​real & imag​​ - 复数数组的实部/虚部

complex_arr = np.array([1+2j, 3+4j])
print(complex_arr.real)  # 输出: [1. 3.]
print(complex_arr.imag)  # 输出: [2. 4.]

五、属性修改技巧

1. ​改变形状(不复制数据)

arr.shape = (3, 2)  # 直接修改shape属性
print(arr)
# 输出:
# [[1 2]
#  [3 4]
#  [5 6]]

2. 类型转换(创建新数组)

arr_float = arr.astype(np.float32)
print(arr_float.dtype)  # 输出: float32

六、属性关系总结

属性名计算公式示例数组(shape=(2,3))
sizenp.prod(shape)2×3=6
nbytessize * itemsize6×4=24(int32类型)
strides(itemsize*shape[1], itemsize)(12, 4) → 对shape(2,3)的int32数组

七、实用场景

​1. ​调试维度不匹配错误​​ → 使用 shape 快速验证数组结构
​2. ​优化内存占用​​ → 通过 dtype 和 nbytes 选择合适数据类型
​3. ​处理图像数据​​ → 用 reshape 转换(height, width, channels)格式
​4. ​科学计算​​ → 用 real/imag 处理复数信号数据
http://www.xdnf.cn/news/8903.html

相关文章:

  • 英语科研词汇现象及语言演变探讨
  • Rephrase and Respond :让大语言模型为自己提出更优的问题
  • Disruptor—3.核心源码实现分析二
  • 第十八章:数据治理之数据质量:“数据质量”不仅仅和“数据质量”有关
  • 数据库故障排查指南技术文章
  • 用 Python 构建自动驾驶的实时通信系统:让车辆“交流”起来!
  • 【Python 元祖】 Tuple 核心知识点
  • no cmake_c_compiler could be found.
  • SQL每日一练(7)
  • 动态规划-53.最大子数组和-力扣(LeetCode)
  • java 动态代理
  • 计算机系统简介(一)
  • 使用keil5实现RA4M2按键控制LED的状态
  • java学习记录——MyBatisPlus
  • 结合GIS谈谈Java面向对象(OOP,Object-Oriented Programming)的核心思想
  • redis集群配置
  • 20250525-更新 Anaconda 和 `pip` 中的库包
  • 嵌入式项目之QT页面制作
  • 英伟达破局1000 Token/秒!Llama 4以光速重塑AI推理边界
  • 为什么hash函数能减少哈希冲突
  • C++函数入门:void与int详解
  • 前端融球效果原理讲解+具体实现+模糊度,对比度基础教学
  • AI大模型学习二十八、ACE-Step:生成式AI音乐大模型简介与安装(一)
  • Android 启动流程开发注意事项
  • 蚕豆剥豆机机械原理设计与优化
  • 从零实现智能封面生成器
  • 机器学习课程设计报告 —— 基于口红数据集的情感分析
  • 【Linux网络】UDP套接字【实现英汉转化】
  • Linux Wlan hostapd框架梳理
  • 位运算的小结