高效选择 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中文网其他相关文章!