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

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.dtcms.com/a/348089.html

相关文章:

  • Shell脚本-expect
  • VirtualBox安装openEuler24.03
  • 【C++】函数返回方式详解:传值、传引用与传地址
  • 校园跑腿小程序源码 | 跑腿便利店小程序 含搭建教程
  • 如何在 Ubuntu 上安装和配置 Samba ?
  • 2025年渗透测试面试题总结-30(题目+回答)
  • Java 20 新特性及具体应用
  • Cisdem Video Converter for mac 优秀的视频格式转换工具
  • 夜间跌倒检测响应速度↑150%!陌讯多模态骨架追踪算法在智慧养老院的落地实践
  • 埃氏筛|树dfs|差分计数
  • JVM OOM问题排查与解决思路
  • Meta AI 剧变:汪滔挥刀重组,Llama 开源路线告急,超级智能梦碎还是重生?
  • 96、23种设计模式之原型模式(5/23)
  • STM32 USB 之大坑
  • ubuntu中网卡的 IP 及网关配置设置为永久生效
  • Ubuntu24.04环境下causal_conv1d和mamba_ssm安装
  • 嵌入式八股文面试题总结(QT、RTOS、Linux、ARM、C/C++)(持续更新)
  • QT-布局管理器
  • 音视频面试题集锦第 32 期
  • C语言指针5
  • 使用虚幻引擎5(UE5)开发类似《原神》的开放世界游戏:从技术架构到实践指南
  • LeetCode-542. 01 矩阵
  • (LeetCode 每日一题) 1493. 删掉一个元素以后全为 1 的最长子数组 (双指针)
  • 03-鸿蒙架构与编程模型
  • ChainVault:重塑亚洲黄金交易基建,引领RWA金融新浪潮
  • Java 22 新特性及具体应用
  • week4-[字符数组]英语作文
  • Games101 作业1 旋转与投影
  • 量子链(Qtum)分布式治理协议
  • Qt+windows+QtInstallerFramework打包可执行文件教程-美观且简单