相关疑难解决方法(0)

获取锯齿状切片的 numpy 简写

我有一个经常做的操作,我称之为“锯齿状切片”,因为我不知道它的真实名称。最好通过例子来解释:

a = np.random.randn(50, 10)
entries_of_interest = np.random.randint(10, size = 50)  # Vector of 50 indices between 0 and 9
# Now I want the values contained in each row of a at the corresponding index in "entries of interest"
jagged_slice_of_a = a[np.arange(a.shape[0]), entries_of_interest]
# jagged_slice_of_a is now a vector with 50 elements.  Good.
Run Code Online (Sandbox Code Playgroud)

唯一的问题是执行此a[np.arange(a.shape[0]), entries_of_interest]索引有点麻烦(为此而必须构造“np.arange(a.shape[0])”似乎很愚蠢)。我想要类似:操作员的东西,但它:会做其他事情。有没有更简洁的方法来执行此操作?

最佳答案:

不,原生 numpy 没有更好的方法。如果需要,您可以为此创建一个辅助函数。

python arrays indexing numpy array-broadcasting

5
推荐指数
1
解决办法
767
查看次数

标签 统计

array-broadcasting ×1

arrays ×1

indexing ×1

numpy ×1

python ×1