首页 >后端开发 >Python教程 >如何高效地选择 NumPy 数组中每行的特定列索引?

如何高效地选择 NumPy 数组中每行的特定列索引?

Linda Hamilton
Linda Hamilton原创
2024-10-30 21:51:30343浏览

How to Efficiently Select Specific Column Indexes per Row in NumPy Arrays?

高效选择 NumPy 数组中每行的特定列索引

使用 NumPy 矩阵时,可能会出现需要提取特定列索引的情况基于索引列表的每行列数。对于大型数据集,使用传统的迭代方法可能效率低下。为了解决这个问题,请探索替代解决方案来优化性能。

一种方法涉及使用布尔数组直接选择。考虑一个与原始矩阵 a 形状相同的布尔矩阵 b。 b 中的每一列代表一个条件,指示是否从 a 中选择该列。通过利用布尔索引,您可以直接从 a[b] 检索所需的列值。

例如,给定矩阵 a 和布尔数组 b:

<code class="python">a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = np.array([[False, True, False], [True, False, False], [False, False, True]])</code>

您可以执行直接选择:

<code class="python">result = a[b]</code>

此操作将产生以下输出:

<code class="python">[2, 4, 9]</code>

或者,您可以使用 np.arange 创建索引数组并对其执行直接选择。根据布尔数组生成的逻辑,此方法可能会带来性能优势。

<code class="python">result = a[np.arange(len(a)), [1, 0, 2]]</code>

此方法产生与布尔数组解决方案相同的输出。

通过利用这些优化的选择技术,您可以显着提高从大型 NumPy 数组中提取每行特定列索引的效率。

以上是如何高效地选择 NumPy 数组中每行的特定列索引?的详细内容。更多信息请关注PHP中文网其他相关文章!

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