首页 > 其他分享 >NumPy 分割与搜索数组详解

NumPy 分割与搜索数组详解

时间:2024-05-16 21:42:01浏览次数:11  
标签:arr 分割 详解 split 数组 np array NumPy

NumPy 分割数组

NumPy 提供了 np.array_split() 函数来分割数组,将一个数组拆分成多个较小的子数组。

基本用法

语法:

np.array_split(array, indices_or_sections, axis=None)

array: 要分割的 NumPy 数组。
indices_or_sections: 指定分割位置的整数列表或要包含每个子数组的元素数量的列表。
axis: 可选参数,指定要分割的轴。默认为 0(即行分割)。

示例:

import numpy as np

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

# 将数组分割成 3 个子数组
new_arrays = np.array_split(arr, 3)
print(new_arrays)  # 输出:
                        # [array([1, 2]), array([3, 4]), array([5, 6])]

# 指定分割位置
new_arrays = np.array_split(arr, [2, 5])
print(new_arrays)  # 输出:
                        # [array([1, 2]), array([3, 4]), array([5, 6])]

# 沿列分割
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
new_arrays = np.array_split(arr, 3, axis=1)
print(new_arrays)  # 输出:
                        # [array([[1, 4, 7]]), array([[2, 5, 8]]), array([[3, 6, 9]])]

注意事项

如果 indices_or_sections 指定的分割位置超出数组范围,则会引发异常。
如果数组元素数量不足以满足分割要求,则会从末尾进行调整。
np.array_split() 返回一个包含子数组的列表。

高级用法

除了基本用法之外,np.array_split() 还可以用于更复杂的分割操作:

使用掩码进行分割: 您可以使用掩码数组来指示哪些元素应该包含在每个子数组中。
不均匀分割: 您可以指定每个子数组包含的元素数量,即使数量不均等。
沿着任意轴分割: 您可以使用 axis 参数指定要分割的轴。

例如,以下代码使用掩码将数组分割成两个子数组,第一个子数组包含所有偶数元素,第二个子数组包含所有奇数元素:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])
mask = arr % 2 == 0
new_arrays = np.array_split(arr, mask)
print(new_arrays)  # 输出:
                        # [array([2, 4, 6]), array([1, 3, 5])]

练习

使用 np.array_split() 将以下数组 arr 沿行分割成 4 个子数组,每个子数组包含相等数量的元素。

import numpy as np

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

在评论中分享您的代码和输出。

Sure, here is the requested Markdown formatted content:

NumPy 搜索数组

NumPy 提供了多种方法来搜索数组中的元素,并返回匹配项的索引。

基本用法:np.where()

语法:

np.where(condition)

condition:用于确定要查找的元素的布尔条件。

功能:

np.where() 逐个元素比较条件,并返回满足条件的元素的索引。
它返回一个元组,其中包含一个或多个数组,每个数组表示满足条件的元素的索引。

示例:

import numpy as np

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

# 查找值为 4 的索引
indices = np.where(arr == 4)
print(indices)  # 输出: (array([3, 5, 6]),)

# 查找大于 5 的元素的索引
indices = np.where(arr > 5)
print(indices)  # 输出: (array([6, 7, 8]),)

搜索排序数组:np.searchsorted()

语法:

np.searchsorted(array, value, side='left')

array:已排序的 NumPy 数组。
value:要搜索的值。
side:可选参数,指定搜索方向。默认为 'left'(从左到右)。

功能:

np.searchsorted() 在排序数组中执行二进制搜索,并返回指定值应插入的位置以保持排序顺序。
它假定输入数组已排序。

示例:

import numpy as np

arr = np.array([1, 3, 5, 7, 9])

# 查找值 7 应插入的索引
index = np.searchsorted(arr, 7)
print(index)  # 输出: 3

# 从右侧查找值 2 应插入的索引
index = np.searchsorted(arr, 2, side='right')
print(index)  # 输出: 1

练习

使用 np.where()np.searchsorted() 正确找到以下数组 arr 中所有等于 3 的元素的索引。

import numpy as np

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

在评论中分享您的代码和输出。

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎点赞、收藏、关注

标签:arr,分割,详解,split,数组,np,array,NumPy
From: https://www.cnblogs.com/xiaowange/p/18196801

相关文章

  • 《代码随想录》-3.长度最小的子数组
    题目:给定一个含有n个正整数的数组和一个正整数s,找出该数组中满足其和≥s的长度最小的连续子数组,并返回其长度。如果不存在符合条件的子数组,返回0。滑动窗口:只用一个for循环,其索引指向窗口终点位置窗口是满足其和>=s的最小长度的连续数组当窗口大于等于s,起始位置就要......
  • 柔性数组
    什么是柔性数组柔性数组也称为变长数组,是一种动态数组的实现方式。与普通数组不同的是,柔性数组在定义时不需要明确指定数组大小,在程序运行时可以动态地分配和扩展数组大小,在程序运行时可以动态地分配和扩展数组大小柔性数组是通过C99标准中提供的结构体成员为未知长度的数......
  • JS — webscoket详解
    一.基本概念WebSocket是一种在Web浏览器和服务器之间建立全双工通信的协议。它允许网页实时地发送和接收数据,而不需要页面刷新或像传统HTTP协议那样的轮询操作。WebSocket使用HTTP协议进行握手,并通过Upgrade头字段指定从HTTP到WebSocket的转换。一旦握手成功,WebSocket连接就会......
  • 开源流媒体服务器ZLMediaKit在Windows上编译过程详解(附编译后版本下载)
    场景开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130136245以上讲了ZLMediaKit的具体使用场景,文章中使用的windows的版本不是最新版,比如在flv播放时,旧......
  • 二维数组排序
    为了更灵活地控制排序字段和排序顺序,可以修改DataSorter类,使其能够通过参数指定排序字段和排序顺序。以下是实现方法:DataSorter类<?phpclassDataSorter{/***按指定字段和顺序排序二维数组**@paramarray$data要排序的二维数组*@param......
  • mysql中explain命令详解
    前言我们可以使用explain命令来查看SQL语句的执行计划,从而帮助我们优化慢查询。使用注意:使用的mysql版本为8.0.28数据准备CREATETABLE`tb_product2`(`id`bigintNOTNULLAUTO_INCREMENTCOMMENT'商品ID',`name`varchar(20)DEFAULTNULLCOMMENT'商品......
  • VMWare Workstation 17命令行自动化测试高级用法详解
    VMwareWorkstation是一个强大的桌面虚拟化解决方案,允许用户在同一台物理机上运行多个虚拟机。虽然VMwareWorkstation主要提供图形用户界面(GUI)来管理虚拟机,但它也支持命令行工具来执行一些高级任务和自动化操作。VMwareWorkstation本身并不直接提供一套完整的命令行工......
  • 高效调度新篇章:详解DolphinScheduler 3.2.0生产级集群搭建
    转载自tuoluzhe8521导读:通过简化复杂的任务依赖关系,DolphinScheduler为数据工程师提供了强大的工作流程管理和调度能力。在3.2.0版本中,DolphinScheduler带来了一系列新功能和改进,使其在生产环境中的稳定性和可用性得到了显著提升。为了帮助读者更好地理解和应用这一版本,我们精......
  • Linux tcpdump 命令详解与示例
    命令概要Linux作为网络服务器,特别是作为路由器和网关时,数据的采集和分析是不可少的。tcpdump是Linux中强大的网络数据采集分析工具之一。用简单的话来定义tcpdump,就是:dumpthetrafficonanetwork,根据使用者的定义对网络上的数据包进行截获的包分析工具。作为互联网上经典的......
  • 108. 将有序数组转换为二叉搜索树(leetcode)
    https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/要点是分割左右区间,并且分割时需要注意left和right相加可能会超过int,但是本题不需要classSolution{publicTreeNodesortedArrayToBST(int[]nums){//有返回值写法......