简短描述:
我有两个 numpy 数组。
data
,data.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/