Is better way to perform gather behavior?

I have an original code as using torch.gather

#outputs_x size of  68x64 and max_ids size of 68x1     
outputs_x_select = torch.gather(outputs_x, 1, max_ids) #68x1    
outputs_x_select = outputs_x_select.squeeze(1) # 68

I want to find an alternative way that does not use torch.gather function. Currently, I found a way that use index_select such as

#outputs_x size of  68x64 and max_ids size of 68  
max_ids = max_ids.squeeze()   
outputs_x_select = torch.index_select(outputs_x, 1, max_ids)
outputs_x_select = outputs_x_select[range(len(max_ids)), range(len(max_ids))]       

The behavior of index_select is that we will select a column/row for each index in indices. It is memory consuming than gather. Do we have any better way than my way to perform gather behavior?