我有一个我经常做的手术,我称之为“锯齿状切片”,因为我不知道它的真实名称。最好通过示例来解释:
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.
唯一的问题是做这个a[np.arange(a.shape[0]), entries_of_interest]
索引有点麻烦(为了这个而必须构造“np.arange(a.shape [0])”似乎很愚蠢)。我想要类似:
操作员的东西,但:
做别的事情。有没有更简洁的方法来做这个操作?
最佳答案:
不,本机 numpy 没有更好的方法。如果需要,您可以为此创建一个辅助函数。