首页 >后端开发 >Python教程 >如何在 NumPy 数组中高效查找匹配值的行索引?

如何在 NumPy 数组中高效查找匹配值的行索引?

Barbara Streisand
Barbara Streisand原创
2024-12-15 18:06:12657浏览

How to Efficiently Find Row Indices Matching Values in a NumPy Array?

查找 Numpy 数组中各个值的行索引

1。理解问题

给定一个数组 X 和一个数组 searched_values,任务是找到 X 中与 searched_values 中相应行匹配的行索引。

2。使用 NumPy 广播的方法

np.where((X==searched_values[:,None]).all(-1))[1]

3.使用 np.ravel_multi_index 和 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]

4 的内存高效方法。了解 np.ravel_multi_index

np.ravel_multi_index 将 n 维索引的 2D 数组转换为线性索引等价物。例如,给定 X 和 dims,它将计算:

np.ravel_multi_index(X.T,dims)

结果为 [30, 66, 61, 24, 41],其中每个数字表示 X 中相应行的线性索引。

5。选择唯一线性索引的维度

为 np.ravel_multi_index 选择维度以生成唯一线性索引时,请考虑以下事项:

  • 输入数组 (X) 中的每一列代表一个轴被映射到的网格的。
  • 为了确保唯一的线性索引,应该考虑每个轴的最大拉伸,这是每列加 1。

对于给定的 X:

dims = X.max(0)+1 # [10, 7]

这将创建一个至少具有指定维度的网格,确保唯一的线性索引。

以上是如何在 NumPy 数组中高效查找匹配值的行索引?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn