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

Python关于numpy的基础知识数组的升维

在 Python 数据处理中,numpy 是常用的科学计算库,数组操作是其核心内容之一。下面通过代码示例,展示如何从 Python 自带列表构建 numpy 一维数组,再进一步升维构建二维数组。\

import numpy as np# 一维数组构建:从 Python 列表到 numpy 一维数组
list1 = [1, 2, 3, 4, 5]  # Python 自带的列表数据类型
print("Python 列表 list1:", list1)
v = np.array(list1)  # 转换为 numpy 一维数组
print("numpy 一维数组 v:", v)# 二维数组构建:基于一维数组升维,由多个一维数组构成二维数组
m = np.array([list1, list1, list1])  # 用多个一维列表构建 numpy 二维数组
print("numpy 二维数组 m:", m)

代码先利用 np.array() 将 Python 列表转为 numpy 一维数组,接着通过传入包含多个一维列表(这里是重复的 list1 )的列表,构建出二维 numpy 数组,清晰呈现了 numpy 数组从一维到二维的升维构建过程,帮助理解 numpy 数组基础且重要的 “升维” 操作逻辑 。 

 

 图形最多能展示的维度就是两维,所以更高维度的内容就不展现了。

数组的属性

"""
数组的基本属性
"""# 一维数组
a = v.shape  # 查询数组的形状
b = v.ndim   # 查询数组的维度
c = v.size   # 查询数组中数据个数
print(type(v))
d = v.dtype  # 查询数组中的元素类型,int8, int16, int32, int64: 表示不同长度的有符号整数。

一、数组的形状(shape

v.shape 用于获取数组的形状信息,返回一个元组。对于一维数组 v ,运行后得到的结果是 (5,) ,元组中的数字 5 表示该一维数组有 5 个元素,形象地描述了数组在各个维度上的长度分布,后续处理二维、三维等多维数组时,能清晰知晓行、列等维度的元素数量 。比如二维数组 m = np.array([[1,2],[3,4]]) ,m.shape 会返回 (2, 2) ,代表 2 行 2 列 。

二、数组的维度(ndim

v.ndim 用来查询数组的维度。对于一维数组 v ,结果是 1 ,说明它是一维结构;若换成二维数组,ndim 结果为 2 ,三维数组则返回 3 ,以此类推。这能让我们快速判断数组的 “空间” 层次,像处理图像数据时,三维数组可能代表高度、宽度、通道数,通过 ndim 可初步识别数据结构 。

三、数组中数据个数(size

v.size 会返回数组中元素的总个数。对于 v = np.array([1,2,3,4,5]) ,size 结果是 5 ,就是数组里元素的数量;要是二维数组 m = np.array([[1,2],[3,4]]) ,m.size 为 4(2 行 ×2 列 )。在统计数据总量、计算全局指标(如所有元素的平均值,可结合 sum 与 size 计算 )时,这个属性很实用 。

四、数组中的元素类型(dtype

v.dtype 用于查询数组中元素的类型。对于上面定义的 v ,元素是整数,默认情况下 numpy 会识别为 int32 或 int64(取决于环境 )。numpy 支持丰富的数据类型,像 int8(小范围有符号整数 )、float32(单精度浮点数 )、float64(双精度浮点数 )等。明确元素类型,一方面能帮我们了解数据存储方式(不同类型占用内存不同 ),另一方面可避免因类型不匹配导致的计算错误,比如参与运算的数组元素类型需兼容 。

这些数组属性从不同维度刻画了 numpy 数组的特征,在数据预处理、分析计算过程中,灵活运用它们,能让我们更高效地操控数组,减少错误,提升代码质量与运行效率 。

v.dtype 用于查询数组中元素的类型。numpy 支持丰富的数据类型,不同整数类型有明确含义与应用场景,下面详细介绍常见整数类型及相关颜色表示知识:

(一)整数类型解析
  • int8
    表示 8 位有符号整数,取值范围是 -128 到 127(计算方式:−27 到 27−1 )。由于存储空间小(仅占 1 字节 ),适合存储数据范围明确且较小的整数,比如简单的分类标签(标签值在 -128 ~ 127 内 ),但受限于范围,存储较大数值会溢出报错。
  • int16
    是 16 位有符号整数,取值范围为 -32768 到 32767(−215 到 215−1 ),占 2 字节。可存储稍大范围的整数,像小型数据集的计数、简单传感器采集的小数值等场景适用。
  • int32
    为 32 位有符号整数,取值范围是 -2147483648 到 2147483647(−231 到 231−1 ),占用 4 字节。在常规数据处理中较常用,能覆盖大部分日常整数场景,如一般的统计数量、数组索引计算等,多数情况下 numpy 数组默认整数类型可能是 int32(因环境而异 )。
  • int64
    是 64 位有符号整数,取值范围达到 -9223372036854775808 到 9223372036854775807(−263 到 263−1 ),占 8 字节。当处理极大数值时(比如大规模数据的唯一标识、科学计算中的超大整数结果 ),int64 可避免溢出问题,保证数据准确。
(二)颜色值与整数类型关联

在计算机图形学、图像处理领域,颜色常通过 RGB 模式 表示,即由红(Red)、绿(Green)、蓝(Blue)三个通道的数值组合呈现色彩。每个通道的取值范围是 0 到 255 ,代表该颜色分量的强度。

这里的 0 到 255 是 无符号 8 位整数(对应 numpy 中的 uint8 类型 ,注意不是前面讲的有符号 int8 ),取值范围是 0 到 28−1=255 。每个通道用 1 字节(8 位)存储,三种通道组合起来,用 3 字节就能表示 1600 余万种颜色(256×256×256 ),满足日常图像显示需求。比如纯红色可表示为 (255, 0, 0) ,纯绿色是 (0, 255, 0) 等 。

若用 int8 存储颜色通道值,因 int8 有符号,范围是 -128 到 127 ,无法直接对应 0 到 255 的需求,所以图像数据里颜色通道一般用 uint8 类型 。这也体现了不同数据场景下,选择合适 numpy 数据类型的重要性 —— 匹配数据本身的范围和含义,避免数据错误或存储浪费。

五.数组的升维

1. 一维数组变三维数组(reshape 用法)

这些数组属性从不同维度刻画了 numpy 数组的特征,在数据预处理、分析计算过程中,灵活运用它们,能让我们更高效地操控数组,减少错误,提升代码质量与运行效率 。

import numpy as nplist1 = [1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8]#  list1: [1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8]
v = np.array(list1)  # v: [1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8]
print(v)#一维变二维[-1表示自己计算]【返回一个改变后的矩阵】
# a.reshape(newshape, order='C')
# a: 要重新形状的数组。
# newshape: 一个整数或者元组,用于定义新的形状。
# order: 可选参数,指定元素在数组中的读取顺序。'C'意味着按行,'F'意味着按列,'A'意味着原顺序,'K'意味着元素在内存中的出
r1 = v.reshape(4,4)  # r1: [[1 2 3 4], [5 6 7 8], [1 2 3 4], [5 6 7 8]]

 

  • reshape 特点:返回新形状的数组,不修改原数组 v ,需保证数组元素总数能匹配新形状(元素总数 = 各维度大小相乘 )。

 2. 二维数组变三维数组(reshape 用法延伸)

# 二维变三维,假设 r1 是已定义的二维 NumPy 数组,reshape(2, 2, 4) 即第一维大小 2、第二维 2、第三维 4
r3 = r1.reshape(2, 2, 4)  
# 示例 r3 结果形式(依 r1 内容而定):[[[1 2 3 4],  [5 6 7 8]],  [[1 2 3 4],  [5 6 7 8]]]
print(r3) 

3. reshape 中 -1 含义补充

# 以一维数组变二维数组为例,v 是一维数组,reshape(-1, 4) 中 -1 让程序自动算行数,列数固定为 4 
# 要求原数组元素总数能被 4 整除,否则报错,并非“几行几列都可以”,是自动适配行数
r1 = v.reshape(-1, 4)  
print(r1)  
# 获取数组维度数量,ndim 是 NumPy 数组属性,比如二维数组返回 2 
print(r1.ndim)  

 二、resize 方法对比(直接修改原数组)

# resize 不返回新数组,直接修改原数组。以下先展示错误用法,再演示正确逻辑
# 错误示例:resize 无返回值,不能用变量接收结果
# r4 = v.resize(2, 4)  
# print(r4)  # 正确用法:直接修改原数组 v 的形状为 4 行 4 列(需保证元素总数匹配,不够可能补值或截断,依 NumPy 规则)
v.resize(4, 4)  
# 打印修改后的原数组 v
print(v)  
  • resize 特点:直接修改原始数组,不返回结果 ;若新形状所需元素数与原数组不同,NumPy 会按规则补值(默认补 0 等,不同场景有差异 )或截断元素。

 

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

相关文章:

  • leetcode丑数II计算第n个丑数
  • 操作系统总结
  • dify创建OCR工作流
  • springboot-profile
  • [学习] 双边带调制 (DSB) 与单边带调制 (SSB) 深度对比
  • 【Java学习|黑马笔记|Day18】Stream流|获取、中间方法、终结方法、收集方法及其练习
  • Redis面试精讲 Day 4:Redis事务与原子性保证
  • Node.js:常用工具、GET/POST请求的写法、工具模块
  • 基于单片机无线防丢/儿童防丢报警器
  • xavier nx上编译fast-livo过程中出现的问题记录
  • 分享一款免费好用的电视远程推送传输助手TV版软件
  • week4
  • 游戏剧情抄袭侵权比对报告:防止“爆款”变“爆雷”
  • 【分布式 ID】详解百度 uid-generator(源码篇)
  • 【每日算法】专题十_哈希表
  • 代码随想录-250720-划分字母区间
  • 什么是 Linux 发行版?什么是 Linxu 操作系统?
  • python字符串的讲解和应用
  • kotlin Flow快速学习2025
  • Function Callingの进化路:源起篇
  • (5)从零开发 Chrome 插件:Vue3 Chrome 插件待办事项应用
  • 7.20 树hash |字典树模板❗
  • LangChain4j多模型共存+整合SpringBoot
  • springboot websocket 自动重启方案
  • SpringBoot3集成MapstructPlus
  • 抓包工具使用教程
  • 网安-文件上传-upload-labs
  • Laravel 原子锁概念讲解
  • jdk各个版本特性
  • Linux 基础文件IO操作