查找 Numpy 数组中多个值的行索引
问题:
我们给定一个 NumPy 数组 X 和一组值 searched_values。目标是确定 X 中与 searched_values 中的每个值相对应的行索引。
例如,对于以下输入数组:
X = np.array([[4, 2], [9, 3], [8, 5], [3, 3], [5, 6]]) searched_values = np.array([[4, 2], [3, 3], [5, 6]])
所需的输出应该是:
[0, 3, 4]
方法#1:NumPy广播
此方法利用 NumPy 广播在 X 与每行 searched_values 之间执行逐元素比较:
np.where((X == searched_values[:, None]).all(-1))[1]
方法 #2:使用 np 进行内存高效转换.in1d
为了节省内存,我们可以转换每一行将 X 和 searched_values 转换为线性索引等价物,然后应用 np.in1d 进行交集:
dims = X.max(0) + 1 out = np.where(np.in1d(np.ravel_multi_index(X.T, dims), np.ravel_multi_index(searched_values.T, dims)))[0]
方法#3:使用 np.searchsorted
另一种内存高效转换使用 np.searchsorted 的内存高效方法和线性索引的相同原理转换:
dims = X.max(0) + 1 X1D = np.ravel_multi_index(X.T, dims) searched_valuesID = np.ravel_multi_index(searched_values.T, dims) sidx = X1D.argsort() out = sidx[np.searchsorted(X1D, searched_valuesID, sorter=sidx)]
理解 np.ravel_multi_index
np.ravel_multi_index 将 X 的每一行转换为唯一的线性索引等价物。它对 n 维索引的 2D 数组以及这些索引要映射到的 n 维网格的形状进行操作。
例如,在我们的示例中,X 的每一行代表一个索引元组对于尺寸变暗的 2D 网格。 np.ravel_multi_index 将每个元组映射到唯一的线性索引。
以上是如何在 NumPy 数组中查找多个值的行索引?的详细内容。更多信息请关注PHP中文网其他相关文章!

文章讨论了由于语法歧义而导致的Python中元组理解的不可能。建议使用tuple()与发电机表达式使用tuple()有效地创建元组。(159个字符)

本文解释了Python中的模块和包装,它们的差异和用法。模块是单个文件,而软件包是带有__init__.py文件的目录,在层次上组织相关模块。

文章讨论了Python中的Docstrings,其用法和收益。主要问题:Docstrings对于代码文档和可访问性的重要性。

本文讨论了Python中的“ Pass”语句,该语句是函数和类等代码结构中用作占位符的空操作,允许在没有语法错误的情况下实现将来实现。

文章在Python中讨论 /和//运营商: / for for True Division,//用于地板部门。主要问题是了解它们的差异和用例。Character数量:158


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Dreamweaver CS6
视觉化网页开发工具

WebStorm Mac版
好用的JavaScript开发工具

Atom编辑器mac版下载
最流行的的开源编辑器

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中