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

NumPy学习第六课(1):数组的高级索引

前言

NumPy 提供了强大的高维数组处理能力,通过高级索引(也称为索引切片),可以灵活地访问和操作数组中的元素。废话不多,直接开整!!!

使用

1、 整数数组索引

import numpy as nparr = np.array([1, 2, 3, 4, 5, 6])
indices = np.array([0, 2, 5])
print(arr[indices])  # 输出: [1 3 6]

2、 布尔索引

import numpy as nparr = np.array([1, 2, 3, 4, 5, 6])
boolean_indices = np.array([True, False, True, False, True, True])
print(arr[boolean_indices])  # 输出: [1 3 5 6]

3、 花式索引

大家可能对这个名称有所不解,这里解释一下什么叫做花式索引。

所谓还是索引就是指的是利用整数数组进行索引,花式索引根据索引数组的值作为目标数组的某个轴的下标来取值。

对于使用一维整型数组作为索引,如果目标是一维数组,那么索引的结果就是对应位置的元素,如果目标是二维数组,那么就是对应下标的行。

花式索引跟切片不一样,它总是将数据复制到新数组中。

import numpy as np# 花式索引
a = np.arange(8)
print('原数组')
print(a)
print('\n')
print('使用花式索引后的数组')
a1 = a[[2, 5]]
print(a1)# 输出:
# 原数组
# [0 1 2 3 4 5 6 7]
# 
# 
# 使用花式索引后的数组
# [2 5]

二维数组使用花式索引

x = np.arange(56).reshape(7, 8)
print('原二维数组')
print(x)
print('\n')
print('使用花式索引后的数组')
print('二维数组读取指定下标对应的行')
x1 = x[[3, 5, 1]]
print(x1)# 原二维数组
# [[ 0  1  2  3  4  5  6  7]
#  [ 8  9 10 11 12 13 14 15]
#  [16 17 18 19 20 21 22 23]
#  [24 25 26 27 28 29 30 31]
#  [32 33 34 35 36 37 38 39]
#  [40 41 42 43 44 45 46 47]
#  [48 49 50 51 52 53 54 55]]
# 
# 
# 使用花式索引后的数组
# 二维数组读取指定下标对应的行
# [[24 25 26 27 28 29 30 31]
#  [40 41 42 43 44 45 46 47]
#  [ 8  9 10 11 12 13 14 15]]

4、 numpy.newaxis进行索引(增加维度)

import numpy as nparr = np.array([1, 2, 3, 4, 5, 6])
reshaped_arr = arr[:, np.newaxis]  # 增加一个维度
print(reshaped_arr)
# 输出:
# [[1]
#  [2]
#  [3]
#  [4]
#  [5]
#  [6]]

5、 np.ix_进行索引(广播)

import numpy as nparr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
broadcasted_indices = np.ix_([arr1, arr2])
print(broadcasted_indices)
# 输出:
# (array([[1],
#        [2],
#        [3]]), array([[4, 5, 6]]).T)

本文提供的内容仅用于个人学习、研究,如有相关权利人的合法权利,请及时通知作者,予以删除!


http://www.mrgr.cn/news/58809.html

相关文章:

  • LeetCode算法(数组)
  • micro-app【微前端实战】主应用 vue3 + vite 子应用 vue3+vite
  • C++20中头文件ranges的使用
  • 【python】OpenCV—Sort the Point Set from Top Left to Bottom Right
  • Spring中三级缓存如何解决循环依赖的
  • 操作系统期末|考研复习知识点汇总 - 持续更新
  • 【JAVA毕业设计】基于Vue和SpringBoot的房产销售系统
  • 业务开发如何才能独立于框架
  • XSS攻击原理与解决方法
  • STM32基于LL库的USART+DMA使用
  • 数据可视化技术综述(5)数据的存储
  • 如何初始化一个线上的GitHub仓库,在本地已有的仓库中上传到线上
  • 从零开始理解 Trie 树:高效字符串存储与查找的利器【自动补全、拼写检查】
  • 什么是DICOM文件?——认识DICOM:医学影像与信息管理的标准化利器
  • [专有网络VPC]网络ACL概述
  • 道路车辆功能安全 ISO 26262标准(8-7)—支持过程
  • Lua 函数
  • 使用单链表实现集合操作:并集、交集与差集
  • 【2024|滑坡数据集论文解读1】CAS滑坡数据集:用于深度学习滑坡检测的大规模多传感器数据集
  • 借助Agent让大模型应用思考、决策并执行任务
  • 一站式能源解决方案:加油与充电的创新结合
  • 数据治理和数据管理之辨
  • 【人工智能-初级】第18章 如何用Pandas进行数据分析和处理
  • 【Linux 从基础到进阶】集群技术与高可用性配置
  • 【NOIP提高组】Car的旅行路线
  • C++ | Leetcode C++题解之 第508题出现次数最多的子树元素和