краткая стенография для получения зубчатого среза
У меня есть операция, которую я обычно делаю, которую я называю «зубчатым срезом», потому что я не знаю настоящего имени для нее. Это лучше всего объяснить на примере:
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. Вы можете создать вспомогательную функцию для этого, если хотите.