numpy数组最常用的4个搜索方法

yizhihongxing

numpy数组最常用的4个搜索方法

NumPy提供了一些搜索和查找数组中元素的方法,包括:

  1. np.where(condition[, x, y]):返回满足条件的元素的下标。可以指定x和y参数,如果不指定,则返回元素下标。
  2. np.argwhere(condition):返回满足条件的元素的下标,与where()方法类似,但返回的是一个包含下标的数组,而不是元组。
  3. np.searchsorted(arr, v[, side, sorter]):返回将值v插入到有序数组arr中的位置,可以指定搜索方向和排序方法。
  4. np.extract(condition, arr):返回满足条件的元素,以一维数组的形式返回。

下面分别进行详细介绍:

np.where(condition[, x, y])

np.where()方法的第一个参数是条件,可以是一个数组或一个条件表达式。它会返回一个由满足条件的元素下标构成的元组或数组,如果指定了x和y参数,则满足条件的元素会被替换为x中的元素,否则将被替换为元素下标。

import numpy as np

# 生成一个随机数组
a = np.random.randint(1, 10, size=(3, 4))
print(a)
# 找到大于5的元素的下标
index = np.where(a > 5)
print(index)
# 替换大于5的元素为0
a[np.where(a > 5)] = 0
print(a)

输出结果:

[[2 2 4 7]
 [4 8 7 1]
 [1 9 9 9]]
(array([0, 1, 1, 2, 2, 2, 2]), array([3, 1, 2, 1, 2, 3, 4]))
[[2 2 4 0]
 [4 0 0 1]
 [1 0 0 0]]

np.argwhere(condition)

np.argwhere()方法返回满足条件的元素的下标,与np.where()方法类似,但返回的是一个包含下标的数组,而不是元组。

示例:

import numpy as np

# 生成一个随机数组
a = np.random.randint(1, 10, size=(3, 4))
print(a)
# 找到大于5的元素的下标
index = np.argwhere(a > 5)
print(index)

输出结果:

[[6 1 6 8]
 [5 5 1 7]
 [2 8 7 5]]
[[0 3]
 [1 0]
 [1 1]
 [1 3]
 [2 1]
 [2 2]]

np.searchsorted(arr, v[, side, sorter])

searchsorted()函数的返回值为一个整数或整数数组,表示插入元素后应该在哪个位置。

如果v的值小于a中的最小元素,则返回0;如果v的值大于a中的最大元素,则返回a的长度。

例如:

import numpy as np

a = np.array([1, 2, 3, 4, 5])
v = 3.5

print(np.searchsorted(a, v, side='left'))  # 输出:3
print(np.searchsorted(a, v, side='right'))  # 输出:3

extract(condition,arr)函数

extract()函数根据指定的条件,从数组中提取满足条件的元素。它返回一个满足条件的一维数组。

下面是一个使用extract()函数的示例:

import numpy as np

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

print(np.extract(condition, arr))  # 输出:[3 4 5]

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:numpy数组最常用的4个搜索方法 - Python技术站

(2)
上一篇 2023年3月1日 下午9:38
下一篇 2023年3月1日 下午10:00

相关文章

  • MacOS(M1芯片 arm架构)下安装tensorflow的详细过程

    MacOS(M1芯片 arm架构)下安装TensorFlow的详细过程 在MacOS(M1芯片 arm架构)下安装TensorFlow需要一些额外的步骤。本文将详细介绍如何在MacOS(M1芯片 arm架构)下安装TensorFlow。 步骤1:安装Homebrew Homebrew是MacOS下的一个包管理器,可以方便地安装和管理软件包。可以使用以下命令安…

    python 2023年5月14日
    00
  • Python中11种NumPy高级操作总结

    Python中11种NumPy高级操作总结 NumPy是Python中一个非常流行的科学计算库,它提供了许多常用的数学函数和工具。本攻略中,我们将介绍11NumPy高级操作,包括的切片、数组的拼接、数组的重塑、数组的排序、的去重、数组的比较、数组的统计、数组的线性代数、数组的傅里叶变换、数组的随机数生成和数组的文件读写。 数组的切片 我们可以使用切片操作来获…

    python 2023年5月13日
    00
  • 浅谈numpy广播机制

    NumPy广播机制是一种非常有用的功能,它允许我们在不进行显式复制数据的情况下对不同形状的数组进行操作。本文将详细讲解NumPy广播机制的原理和用法,并提供两个示例说明。 广播机制原理 NumPy广播机制是一种自动执行的机制,它允许不同形状的数组进行操作。在广播机制中,NumPy会自动将较小的数组广播到较大的数组的形状,以便进行操作。广播机制的原理如下: 如…

    python 2023年5月14日
    00
  • 使用docker安装elk的详细步骤

    下面我将为您详细讲解使用docker安装elk的详细步骤及两条示例说明。 简介 ELK是一种开源的数据管理平台,它由三个主要组件组成:Elasticsearch,Logstash和Kibana。Elasticsearch用作搜索引擎和数据存储库,Logstash用于收集、转换和传输数据,Kibana则用于数据可视化和分析。 使用docker在本地环境搭建EL…

    python 2023年5月13日
    00
  • 对numpy和pandas中数组的合并和拆分详解

    当我们在使用Numpy和Pandas时,经常需要对数组进行合并和拆分。下面将详细讲解Numpy和Pandas中数组的合并和拆分方式。 Numpy中数组的合并和拆分 合并数组 在Numpy中,我们可以使用numpy.concatenate()函数将两个或多个数组沿指定轴连接在一起。下面是一个示例: import numpy as np arr1 = np.ar…

    python 2023年5月13日
    00
  • 解决Numpy与Pytorch彼此转换时的坑

    在使用Numpy和PyTorch进行数据处理和模型训练时,经常需要进行数据类型的转换。但是,在进行转换时,可能会遇到一些坑,本文将介绍如何解决这些坑。 Numpy与PyTorch的数据类型 在Numpy中,常用的数据类型有int、float、bool等,而在PyTorch中,常用的数据类型有torch.int、torch.float、torch.bool等。…

    python 2023年5月14日
    00
  • 利用numpy+matplotlib绘图的基本操作教程

    以下是关于“利用NumPy+Matplotlib绘图的基本操作教程”的完整攻略。 NumPy和Matplotlib简介 NumPy是Python的一个源库,用于处理N维数组和矩阵。它提供了高效的数组和数学,可以用于学计算、数据分析机器学习等领域。 Matplotlib是Python的一个开源库,用于绘制2D图形。它提供了许多绘图函数和具,可以用于数据可视化、…

    python 2023年5月14日
    00
  • numpy拼接矩阵的实现

    以下是关于NumPy拼接矩阵的实现的攻略: NumPy拼接矩阵的实现 在NumPy中,可以使用concatenate()函数来拼接矩阵。除此之外,还有vstack()和hstack()函数可以用来拼接矩阵。以下是一些常用的方法: concatenate()函数 可以使用NumPy的concatenate()函数来拼接矩阵。以下是一个示例: import nu…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部