python - 如何正确广播 NumPy 数组的数组索引

标签 python arrays list numpy indexing

简短描述:

我有两个 numpy 数组。

  • datadata.shape 是一个包含 X 个条目的元组
  • indices,indices.shape 是元组 (X,Y)

indices 基本上是索引数组的列表。 第二个维度上的数组指定 data 中相应维度的索引列表。

  • indices[0,:]data 第一个维度的索引列表。
  • indices[1,:]data 第二维的索引列表。

我想要将所有这些组合起来,形成一个外部产品。

我想使用的语法很简单:

data[indices]

编辑:

这是对我尝试过的所有事情的详细逐步回顾,现已过时 我找到了解决方案,如下。

更新:

我找到了解决方案。 在我下面的回答中,解释了这个索引是如何工作的。 不过,您可能想使用 Divakar 的版本,他展示了 np.ix() 命令,该命令完全可以在一次调用中完成所需的操作。

最佳答案

我们可以简单地使用np.ix_用于创建此类可广播索引数组,然后可以直接将其用于索引。因此,将indices作为形状(M, N)的数组,其中N表示数据数组中的维数,我们将有一个适用于任意维数的 ndarray 的实现,就像这样 -

data[np.ix_(*indices.T)]

如果indices的形状为(N, M),其中N表示数据数组中的维数,则跳过转置:数据[np.ix_(*indices)]

关于python - 如何正确广播 NumPy 数组的数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41044036/

相关文章:

python - SQL 将如何注入(inject)这个?

python - 使用包含索引的字典填充 NumPy 数组

python - 如何检查字符串数组中的重复字母。 Python

python - 如何在 Ubuntu 16+ 上使用 Apache 2.4 设置 Django 1.11 和 Python 3.6.1

python - 将嵌套列表值附加到新列表中

python - 在python中查找嵌套项的索引

c++ - 比有序列表的二进制搜索更快

python - 如何在我的列表中找到具有相同元素的子列表的索引?

python - 如何更改 False 列表中的所有 True 值,反之亦然

python - 我如何在 python3.2 和 linux 系统中使用 opencv