首页  >  文章  >  后端开发  >  如何使用“np.ix_”为具有两个索引列表的 2D NumPy 数组建立索引?

如何使用“np.ix_”为具有两个索引列表的 2D NumPy 数组建立索引?

Linda Hamilton
Linda Hamilton原创
2024-10-26 08:27:30921浏览

How to Index a 2D NumPy Array with Two Lists of Indices Using `np.ix_`?

使用 2 个索引列表对 2D Numpy 数组建立索引

问题陈述

使用以下方法对 2D Numpy 数组建立索引两个单独的索引列表并不像使用单个索引列表那么简单。在处理大型数组时,这可能具有挑战性,因为它需要广播和重塑数组才能实现所需的索引选择。

使用 np.ix_ 和广播的解决方案

Numpy 中的 np.ix_ 函数可用于创建索引数组的元组,这些索引数组可以相互广播以实现所需的索引模式。这种方法可以保持可读性并促进代码优化。

要使用 np.ix_ 执行索引,请按照以下步骤操作:

  1. 使用 np.ix_ 以及行索引和列索引创建两个广播数组.
  2. 使用这些索引数组在原始数组中选择所需的行和列。

示例代码

以下代码演示了如何使用 np.ix_ 进行基于索引的选择:

<code class="python">import numpy as np

# Create indices
row_indices = [4, 2, 18, 16, 7, 19, 4]
col_indices = [1, 2]

# Create broadcasting arrays
index_tuples = np.ix_(row_indices, col_indices)

# Perform indexing
x_indexed = x[index_tuples]</code>

示例输出

>>> x_indexed
array([[76, 56],
       [70, 47],
       [46, 95],
       [76, 56],
       [92, 46]])

其他注意事项

替代语法:
使用 np.ix_ 的替代语法是使用 : 运算符指定沿轴的所有索引,除非另有指定。

广播:
需要注意的是,广播是沿着输入数组的轴发生的。因此,沿每个轴的索引数组的大小应与输入数组的相应维度相匹配。

优化:
使用 np.ix_ 和广播进行索引可以提供显着的性能优势与迭代索引或使用布尔掩码相比。这在处理大型数组时特别有利。

以上是如何使用“np.ix_”为具有两个索引列表的 2D NumPy 数组建立索引?的详细内容。更多信息请关注PHP中文网其他相关文章!

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