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

numpy的花式引用

NumPy 中,花式索引(Fancy Indexing)是一种强大的数组索引方式,允许使用整数数组或布尔数组来访问数组的元素,而不仅仅是通过传统的切片操作。这种方式特别适合从数组中根据条件或特定位置获取元素。下面详细介绍花式索引的几种形式:

1. 整数数组索引(Integer Array Indexing)

通过整数数组来指定数组中要访问的元素,可以是多维的。

import numpy as np
arr1=np.array([1,2,3,4,5,6,7,8])
print(arr1[[0,1,5]])

 当然,也可以用index存储指定数组的下标:

import numpy as np
arr1=np.array([1,2,3,4,5,6,7,8])
index=[0,1,5]
print(arr1[index])

同理对二维数组我们也可以进行相同操作

arr2=np.arange(1,17).reshape(4,4)
print(arr2[[0,1,2,3],[0,1,2,3]])
arr2=np.arange(1,17).reshape(4,4)
row=[0,1,2,3]
col=[0,1,2,3]
print(arr2[row,col])

这两行代码都可以打印出二维数组主对角线的元素。 

 

2. 布尔索引(Boolean Indexing)

布尔索引允许通过布尔条件对数组进行筛选。你可以传入一个布尔数组,数组中 True 的位置会保留下来,False 的位置会被过滤掉。

arr = np.array([1, 2, 3, 4, 5, 6])

# 创建一个布尔条件,筛选出所有大于 3 的元素
condition = arr > 3
print(condition)  # 输出: [False False False  True  True  True]

# 通过布尔数组进行索引
result = arr[condition]
print(result)  # 输出: [4 5 6]

布尔索引是一种非常强大的方式,可以根据条件快速从数组中获取子集,特别适用于数据筛选操作。

 

3. 组合整数和切片索引

你可以将整数索引和切片一起使用,以选择特定的元素或子数组。

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 使用整数选择第 1 行,然后使用切片选择第 1 列到最后一列的元素
result = arr[1, 1:]
print(result)  # 输出: [5 6]

4. 赋值与花式索引 

arr = np.array([10, 20, 30, 40, 50])

# 将第 0, 2, 4 个位置的元素修改为 100
arr[[0, 2, 4]] = 100
print(arr)  # 输出: [100  20 100  40 100]


http://www.kler.cn/news/315423.html

相关文章:

  • 3款免费的GPT类工具
  • Git 原理(提交对象)(结合图与案例)
  • 前后端分离项目中如何保证 API 安全
  • leetcode第十题:正则表达式匹配
  • (k8s)kubernetes 部署Promehteus学习之路
  • C语言:冒泡排序的注意事项及具体实现
  • Linux 基础IO 1
  • set的相关函数(3)
  • Node.js的学习2——内置模块(一)
  • 电气设备施工现场风险状态判断ai模型训练数据集
  • 【沪圈游戏公司作品井喷,游戏产业复兴近在眼前】
  • 整数二分算法和浮点数二分算法
  • 【数据结构与算法 | 灵神题单 | 二叉搜索树篇】力扣653
  • 基于SpringBoot的在线点餐系统【附源码】
  • 【C++笔记】C++编译器拷贝优化和内存管理
  • 【Obsidian】当笔记接入AI,Copilot插件推荐
  • SpringCloud alibaba
  • 算法-环形链表(141)
  • 【Elasticsearch】-图片向量化存储
  • ffplay ubuntu24出现:Could not initialize SDL - dsp: No such audio device
  • Redis存储原理
  • ElementUI 用span-method实现循环el-table组件的合并行功能
  • Spring Boot文件上传/下载问题
  • 计算机网络(运输层)
  • Selenium:开源自动化测试框架的Java实战解析
  • SpringCloud Feign 以及 一个标准的微服务的制作
  • linux驱动开发-ioctl
  • 中国电子学会202406青少年软件编程(Python)等级考试试卷(四级)真题
  • 智能家政保洁|基于java和vue的智能家政保洁预约系统(源码+数据库+文档)
  • 【已解决】Linux ubuntu 20.04 docker 不需要sudo权限