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

Python自学笔记11 Numpy的索引和切片

一维数组索引、切片

索引

按照索引来访问元素:
在这里插入图片描述

比如第一个元素:

a[0] 
a[-11]

最后一个元素

a[-1] 
a[10]

特殊索引

numpy.newaxis 是一个特殊的索引,用于增加数组的维度。
在这里插入图片描述
上图是将一维数组转化为行向量和列向量的示意图。

numpy.squeeze() 函数用于从数组的形状中删除长度为 1 的维度
对于一个形状为 (1, 3, 1, 5) 的四维数组,可以使用 numpy.squeeze(a) 函数将其转换为形状为 (3, 5) 的二维数组,其中长度为 1 的第 0 和第 2 维被删除。

其他升维和变形
将行数组转换为列向量

a_1D_array[:, None]
a_1D_array.reshape(-1,1)

将数组转化维行向量

a_1D_array[None, :]
a_1D_array.reshape(1,-1)

行向量与列向量相乘

a_1D_array[np.newaxis, :] @ a_1D_array[:, np.newaxis]

结果;array([[110]])
列向量与行向量相乘

a_1D_array[:, np.newaxis] @ a_1D_array[np.newaxis, :]

结果
array([[ 25, 20, 15, 10, 5, 0, -5, -10, -15, -20, -25],
[ 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20],
[ 15, 12, 9, 6, 3, 0, -3, -6, -9, -12, -15],
[ 10, 8, 6, 4, 2, 0, -2, -4, -6, -8, -10],
[ 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5],
[-10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10],
[-15, -12, -9, -6, -3, 0, 3, 6, 9, 12, 15],
[-20, -16, -12, -8, -4, 0, 4, 8, 12, 16, 20],
[-25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25]])

连续升维升到三维:

a_1D_array[:, np.newaxis, np.newaxis]

切片

开始索引指定要获取的第一个元素的位置,结束索引指定要获取的最后一个元素的位置+1。
在这里插入图片描述
设定步长:
在这里插入图片描述
翻转切片:
在这里插入图片描述

整数索引、 切片

使用整数索引可以更加灵活的进行切片
在这里插入图片描述

布尔索引、切片

使用布尔值来选择我们想要的切片
在这里插入图片描述

视图和副本

在未使用copy函数时,默认是视图切片,即改变切片的内容会直接改变原数组;而使用了copy函数的切片会被视为新的数组。

# 创建一个一维数组
a = np.array([1, 2, 3, 4, 5])# 创建一个切片视图
s = a[1:3]# 修改视图中的数据
s[0] = 1000# 查看原始数组
print(a) # 输出:[1 1000 3 4 5]# 创建一个整数数组索引副本
c = a[[1, 3]].copy()# 修改副本中的数据
c[0] = 888# 查看原始数组
print(a) # 输出:[1 1000 3 4 5]
print(c)

二维数组索引、切片

取出单一元素

在这里插入图片描述

取出行

取出第 0 行,只需 a[0], 结果为一维数组。而 a[[0], :] 取出第 0 行,结果为二
维数组。
在这里插入图片描述

取出列

在这里插入图片描述

取出特定的行列

在这里插入图片描述

布尔索引,切片

在这里插入图片描述

http://www.xdnf.cn/news/18835.html

相关文章:

  • Sui 主网升级至 V1.54.2
  • Lucene 与 Elasticsearch:从底层引擎到分布式搜索平台的演进
  • 虚幻引擎5(UE5)Android端游戏开发全流程指南:从环境配置到项目发布
  • Spring Boot测试陷阱:失败测试为何“传染”其他用例?
  • 在PC机上使用虚幻引擎5(UE5)开发第一款游戏的完整入门指南
  • HTTP请求中的CGI请求与登录注册机制
  • Golang云端编程深度指南:架构本质与高阶实践
  • 动态规划--编译距离
  • 包裹堆叠场景漏检率↓79%!陌讯多目标追踪算法在智慧物流的实践优化
  • C/C++数据结构之循环链表
  • Redis详解--基本篇
  • 手写MyBatis第31弹-用工厂模式重构MyBatis的SqlSession创建过程
  • 数据可视化——matplotlib库
  • Rust Web开发指南 第三章(Axum 请求体解析:处理 JSON、表单与文件上传)
  • IQC、IPQC、PQC、FQC、OQC在ERP/MES/WMS中的系统协同
  • [每周一更]-(第157期):深入理解Go语言的垃圾回收机制:调优与监控
  • C++ 容器——vector
  • 第2章:幽灵协议初现
  • 通过API接口多并发采集数据的方法与实践
  • 马斯克宣布开源Grok 2.5:非商业许可引争议,模型需8×40GB GPU运行,Grok 3半年后开源
  • 新的 Gmail 网络钓鱼攻击利用 AI 提示注入来逃避检测
  • VScode设置鼠标滚轮调节代码
  • 深度学习部署实战 Ubuntu24.04单机多卡部署ERNIE-4.5-VL-28B-A3B-Paddle文心多模态大模型(详细教程)
  • LeetCode-542. 01 矩阵
  • 数据库的基本操作
  • 16、web应用系统分析语设计
  • 构建AI智能体:十二、给词语绘制地图:Embedding如何构建机器的认知空间
  • 基于Langchain框架的DeepSeek-v3+Faiss实现RAG知识问答系统(含完整代码)
  • 华为云Stack环境中计算资源,存储资源,网络资源发放前的准备工作(上篇)
  • wpf之Grid控件