「Python数据科学」NumPy切片与newaxis的结合,实现更灵活的操作

Pythonnumpy广播broadcastnp.newaxis()函数详解 广播broadcastnumpynewaxis()函数详解 阅读详情

引言

NumPy中多维数组的切片,除了支持常规的切片方式外,还可以通过整数数组切片、布尔数组切片,以及多种方式的灵活组合。

但是,NumPy切片的强大功能不止于此,除了通过切片获得子数组外,还可以通过切片进行数组的升维等维度变换操作,从而满足矩阵计算等场景对矩阵形状的需求。

本文就来介绍通过切片的方式实现多维数组的维度变换。

本文的主要内容有:

1、什么是newaxis

2、利用newaxis实现数组的维度变换

3、利用Ellipsis简化切片操作

什么是newaxis

前面已经介绍了关于NumPy多维数组进行切片的各种方式,基本已经满足了日常的业务需求。但是,除了切片获取子数组之外,有时候,我们还需要将数组的维度进行变换,比如数组的升维,这时候也可以通过切片来实现。

在切片操作中,我们一般在[]中填入各个维度切片的数字或者stride等,如果填入None会怎么样呢?

311f0469d14a49a255cfa405a2864ff2.jpeg

可以看到,a[None]的方式,实际上是对原数组进行了升维操作。

所以,我们可以通过在切片中引入None,实现对数组的维度变换。但是,在切片中组合进去None,有时候不太直观,所以,NumPy引入了一个常量:newaxis。

ced35629d19571f62ca7d7519a70be94.jpeg

newaxis实际上是None的别名,通过以下代码可以验证:

87c3f717c455345a42a8fa6da3c1e400.jpeg

之所以使用newaxis,因为在NumPy中,多维数组的每一个维度,其实都是一个数据轴(axis),添加一个维度,就相当于新增一个数据轴。

关于轴的概念,这里简单解释说明一下:

轴(axis)是NumPy中描述数组维度的概念。每个维度都有一个对应的轴,通常从0开始计数。例如,对于一个形状为(3, 4, 5)的三维数组,轴0对应第一个维度(3),轴1对应第二个维度(4),轴2对应第三个维度(5)。

而NumPy中的切片操作,都是验证特定的轴进行的。比如一个二维数组中,第一个轴对应行,第二个轴对应列。切片的操作可以分别在行和列上进行。

所谓的升维操作,会增加一个新的轴,所以使用newaxis更加直观。

利用newaxis实现数组的维度变换

利用newaxis和切片进行组合,其实可以实现更加复杂的数据选择和形状的调整。

1、行向量与列向量

225741726bb795b4f1aed5685e051c58.jpeg

2、可以在任意位置新增轴

可以在任意两个轴之间添加新的轴,也可以添加多个轴,还可以将添加轴与切片进行组合操作:

50f8ece96e804525bd28cceeddbf778f.jpeg

利用Ellipsis简化切片操作

在Python中有一个内置常量Ellipsis,表示为...(注意,是三个英文句号,而不是英文省略号,否则语法报错)。

它是一个单例对象,属于EllipsisType类型。Ellipsis主要用于占位符或者表示“等等”含义的场景。在NumPy库中,Ellipsis也可以用于数组切片,表示“所有其他轴”,从而在简化多维数组的切片操作。

首先看一下Python中的Ellipsis

5298117acbbc600a72aa53d91b49ba43.jpeg

NumPy中,也可以使用Ellipsis对象,通常用于其他所有轴的含义:

a62f9bdd5687b1b920de0d4ad05a0e07.jpeg

总结

本文对NumPy中的切片操作进行了相应的扩展,同时引入newaxis常量和Ellipsis对象的概念,介绍了NumPy中关于轴的概念,以及升维与切片组合实现更加复杂的切片需求的实现。

以上就是本文的全部内容了,感谢您的拨冗阅读!

de8b255f0a916de37fdec1003d2a702d.jpeg

关于np.newaxis()函数的使用浅谈 本文主要介绍了np.newaxis()函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。 阅读详情

相关推荐

数据科学新手实操路线图:从NumPy到TensorFlow五库精讲

数据科学不是API堆砌,而是围绕数据流动构建的工程化链条:从NumPy的向量化计算基座,到Pandas的结构化清洗分析,再到Matplotlib的业务可读可视化、Scikit-learn的标准化建模闭环,最终延伸至TensorFlow对非结构化数据(图像、语音、文本)的张量处理能力。这一路径直击新手核心痛点——‘不知从哪行代码开始’和‘不理解为何要这样写’,强调用真实业务问题(如日期混乱清洗、销售趋势归因、月度预测)驱动学习,以最小可运行闭环建立肌肉记忆。文中重点贯穿NumPy广播机制Pandas gr

张沈鹏,在路上 ... 483

numpy.newaxis详解

numpy.newaxis numpy.newaxis的工作方式及适用场合 简单地说,newaxis的作用是给现有的数组增加一个维度。例如: 1维数组将变为2维数组 2维数组将变为3维数组 3维数组将变为4维数组 4维数组将变为5维数组 等等。 我们在这里利用图示的方法解释一维数组通过添加新维度变为二维数组的过程: 一维数组在列方向(axis=0)进行广播变为二维数组: 一维数组在行方...

wzy628810的博客 3421

STM32F103多通道PWM输出避坑指南:TIM1_CH1异常输出的解决方案

本文深入解析STM32F103多通道PWM输出中的TIM1_CH1异常问题,提供从时钟配置到GPIO复用的系统化解决方案。通过黄金法则配置流程和高级调试技巧,帮助开发者快速定位并解决PWM输出不稳定、占空比异常等问题,同时拓展多定时器协同和互补PWM等高级应用场景。

weixin_29194817的博客 89

Numpy】基础学习:一文了解np.newaxis的作用、用法

🌵【Numpy基础学习】一文掌握np.newaxis的奥秘🌵 🚀 想要轻松玩转Numpy多维数组?np.newaxis是你的得力助手!本文带你从入门到精通,掌握其作用用法。 🎯 入门篇,我们了解np.newaxis的基本用法,将一维数组秒变二维,操作简便。 💡 进阶篇,探索np.newaxis多可能性,在任意维度增加新轴,重塑数组随心所欲。 🔧 实战篇,结合重塑广播,让np.newaxis在矩阵运算中大放异彩。 🚀 总结篇,回顾np.newaxis的精髓,助你成为Numpy

创作高质量博文,分享知识,共同进步! 8900

numpynewaxis函数的基本用法及其理解(傻瓜版)

newaxisnumpy中的一个函数,顾名思义,就是插入新维度的意思,比如将一维数组变成二维数组,二维变成三维等。 最基本的,将一维数组变为二维数组的举例如下: import numpy as np x=np.arange(4) print(x)#初始的一维数组 print(x[np.newaxis,:])#得到的二维数组 print(x[:,np.newaxis])#得到的另一个二维数组 输出结果: [0 1 2 3] [[0 1 2 3]] [[0] [1] [2] [3]] 可以看到,ne

m0_46330603的博客 3万+

Numpy核心概念向量化计算:Python数据科学基石详解

Python数据科学和机器学习领域,高效处理大规模数值计算是核心需求。Numpy通过其核心数据结构ndarray(N维数组)实现了内存连续存储和同质数据类型,为向量化操作奠定了基础。其底层采用C语言优化,能大幅提升计算性能,避免Python原生循环的开销。这一技术价值在于为数据预处理、科学计算和算法实现提供了高效基础设施。在数据分析、机器学习模型训练和科学仿真等应用场景中,Numpy的广播机制和通用函数(ufunc)使得复杂运算得以简洁表达。本文聚焦Numpy的安装、数组创建、索引切片、向量化计算及性能优

weixin_34174322的博客 498

Python数据科学读书笔记2--Numpy入门(3)

第二章 Numpy入门 2.2.Numpy数组基础 2.2.4 数据的变形   数据变形最灵活实现方式是通过reshape()函数来实现。不改变数组元素,返回一个shape形状的数组,原数组不变 >>> grid = np.arange(1, 10).reshape((3, 3)) >>> grid array([[1, 2, 3], [4, 5...

初一的博客 339

NumPy数组维度增加移除的详细方法实战指南

本文系统介绍了NumPy中数组维度调整的操作方法。主要内容包括:1)4种增加维度的方式(np.newaxis、expand_dims、reshape和广播机制);2)4种移除维度的技术(squeeze、reshape、索引和聚合函数);3)einsum高级维度操作。通过具体代码示例,详细展示了每种方法的适用场景和实现技巧,帮助开发者掌握数据预处理、特征工程等场景中的维度变换操作,提高数据处理效率和代码质量。这些维度操作技巧在科学计算和机器学习领域具有重要应用价值。

a246808642的博客 1053

NumPy入门指南:Python科学计算基石高效数组操作

Python数据分析机器学习领域,高效处理大规模数值数据是核心需求。NumPy作为底层由C语言实现的高性能库,通过其核心数据结构ndarray(N维数组)解决了原生列表在计算速度内存效率上的瓶颈。其设计原理基于同质数据类型连续内存存储,结合向量化运算广播机制,实现了数百倍于纯Python循环的运算速度,为复杂数学计算算法实现提供了坚实基础。这一技术价值使其成为整个Python科学计算生态的通用数据交换格式,支撑着Pandas、Scikit-learn等上层库的运行。在实际应用场景中,无论是图像处

weixin_34080951的博客 332

Numpy——数组合并

文章目录1.np.vstack()2.np.hstack()3.np.newaxis()4.综合newaxis、vstack、hstack5.np.concatenate() 1.np.vstack() 对于一个array的合并,我们可以想到按行、按列等多种方式进行合并。 import numpy as np A = np.array([1,2,3,4,5,6]) B = np.array([6,...

weixin_37763870的博客 1097

NumPy数组创建索引:从基础概念到高效数据操作实战

Python数据处理领域,数组是进行高效数值计算的基础数据结构。NumPy库通过其核心的ndarray对象,实现了基于连续内存的同质化数据存储,这一设计原理使得向量化操作成为可能,从而大幅提升了计算性能。其技术价值在于将底层C/Fortran的高效循环Python的简洁语法相结合,使得科学计算、数据分析、机器学习等场景下的批量运算变得直观且高效。在实际应用中,掌握数组的创建方法(如使用np.array、np.zeros、np.arange等工厂函数)灵活的索引切片技术(包括基础切片、整数数组索引和布尔

weixin_34302561的博客 437

NumPy核心原理实战:向量化计算、广播机制性能优化全解析

Python科学计算领域,高效处理大规模数值数据是核心需求。传统Python列表因其灵活性和解释执行特性,在处理数值运算时存在显著的性能瓶颈。NumPy通过引入同质、连续存储的ndarray多维数组数据结构,并利用底层C语言实现实现了真正的向量化计算。其核心机制如广播允许不同形状数组进行算术运算,而通用函数则支持元素级操作,这共同构成了高性能数值计算的基础。这种向量化思维和高效的数据结构,使得NumPy成为机器学习、图像处理、金融分析等场景中处理矩阵运算、数据统计和线性代数的基石技术。掌握NumPy的数

weixin_33749242的博客 373

Numpy核心概念高效数组操作全解析:从ndarray到向量化运算

Python数据科学和机器学习领域,数组操作是基础且核心的技术概念。Numpy库通过引入ndarray(N维数组)对象,解决了Python原生列表在数值计算中的效率瓶颈。其原理在于利用连续内存存储和同质数据类型,结合底层C/Fortran预编译代码,实现了高效的向量化运算。这一技术价值体现在能够替代显式循环,使大规模数值计算速度提升数十至上百倍,极大优化了科学计算和算法实现的性能。在应用场景上,Numpy的广播机制和通用函数(ufunc)为图像处理、金融建模、神经网络训练等领域的多维数据操作提供了统一且高

weixin_34068198的博客 296

np.newaxis作用详解---超简单理解方式,通透

一、起始 np.newaxis的作用就是在这一位置增加一个一维,这一位置指的是np.newaxis所在的位置,举个例子如下。 x1 = np.array([1, 2, 3, 4, 5]) # the shape of x1 is (5,) x1_new = x1[:, np.newaxis] # now, the shape of x1_new is (5, 1) # array([[1], # [2], # [3], # [4], # [5]]) x

THMAIL的博客 2万+

np.newaxis()函数的使用浅谈

本文主要介绍了np.newaxis()函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

xiaoweids的博客 409

扩充矩阵维度:newaxis和expand_dims的用法

数组中np.newaxis的用法,及一个实际运行的详解

EvenHO的博客 1336

pythonnumpy.newaxis

1、np.newaxis的功能是插入新维度 a=np.array([1,2,3,4,5]) print(a.shape)  #(5,)表示有五个元素 print(a)  #[1 2 3 4 5]即a是一个一维数组 b=a[np.newaxis,:] print(b.shape) #(1, 5) print(b)  #[[1 2 3 4 5]]即b是一个二维数组 c=a[:,np.newaxi...

mingyuli的博客 1231

numpynewaxis

newaxis的作用为给numpy数组增加新的维度 示例代码: import numpy as np a = np.array([1,2,3]) #a.shsape=(3,) a1 = a[np.newaxis,:] #a1.shape=(1,3) print(a1) #[[1 2 3]] a2 = a[:,np.newaxis] #a2.shape=(3,1) print(a2) 打印结果...

m0_38027013的博客 237

numpy中bincount、repeat、newaxis以及assert的用法详解

一、numpy.bincount详解 先给出官网上的解释。 函数的功能:统计输入数组中每个元素出现的次数。当然输入数组中的每个元素必须是非负的。 函数的参数: X : 一维数组的形式,数组元素需是非负整数 weights: 数组,输入数组X拥有相同的sha

lighting 1849

避坑指南:C#调用CodeSoft打印标签时常见的5个错误及解决方法

本文总结了C#调用CodeSoft打印标签时常见的5个核心错误及解决方案,涵盖环境配置、模板加载、变量赋值、打印机切换和资源管理。重点解析了如何避免COM对象创建失败、模板路径错误、变量名不匹配、打印机切换异常及内存泄漏等问题,帮助开发者实现稳定高效的标签打印集成。

weixin_29215815的博客 162

Filter_Solutions_教程汇编.pdf

Filter_Solutions_教程汇编.pdf

上一篇: 「Python数据科学」NumPy多维数组的索引与切片
下一篇: 「Python数据科学」ndarray对象的内部机理与数据存储顺序
南宫理的日知录
博客等级 码龄16年 2591粉丝 · 155原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南宫理的日知录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值