take¶
- paddle. take ( x, index, mode='raise', name=None ) [source]
- 
         Returns a new tensor with the elements of input tensor x at the given index. The input tensor is treated as if it were viewed as a 1-D tensor. The result takes the same shape as the index. - Parameters
- 
           - x (Tensor) – An N-D Tensor, its data type should be int32, int64, float32, float64. 
- index (Tensor) – An N-D Tensor, its data type should be int32, int64. 
- mode (str, optional) – - Specifies how out-of-bounds index will behave. the candicates are - 'raise',- 'wrap'and- 'clip'.- 'raise': raise an error (default);
- 'wrap': wrap around;
- 'clip': clip to the range.- 'clip'mode means that all indices that are too large are replaced by the index that addresses the last element. Note that this disables indexing with negative numbers.
 
- name (str, optional) – Name for the operation (optional, default is None). For more information, please refer to Name. 
 
- Returns
- 
           Tensor, Tensor with the same shape as index, the data type is the same with input. 
 Examples import paddle x_int = paddle.arange(0, 12).reshape([3, 4]) x_float = x_int.astype(paddle.float64) idx_pos = paddle.arange(4, 10).reshape([2, 3]) # positive index idx_neg = paddle.arange(-2, 4).reshape([2, 3]) # negative index idx_err = paddle.arange(-2, 13).reshape([3, 5]) # index out of range paddle.take(x_int, idx_pos) # Tensor(shape=[2, 3], dtype=int64, place=Place(cpu), stop_gradient=True, # [[4, 5, 6], # [7, 8, 9]]) paddle.take(x_int, idx_neg) # Tensor(shape=[2, 3], dtype=int64, place=Place(cpu), stop_gradient=True, # [[10, 11, 0 ], # [1 , 2 , 3 ]]) paddle.take(x_float, idx_pos) # Tensor(shape=[2, 3], dtype=float64, place=Place(cpu), stop_gradient=True, # [[4., 5., 6.], # [7., 8., 9.]]) x_int.take(idx_pos) # Tensor(shape=[2, 3], dtype=int64, place=Place(cpu), stop_gradient=True, # [[4, 5, 6], # [7, 8, 9]]) paddle.take(x_int, idx_err, mode='wrap') # Tensor(shape=[3, 5], dtype=int32, place=Place(cpu), stop_gradient=True, # [[10, 11, 0 , 1 , 2 ], # [3 , 4 , 5 , 6 , 7 ], # [8 , 9 , 10, 11, 0 ]]) paddle.take(x_int, idx_err, mode='clip') # Tensor(shape=[3, 5], dtype=int32, place=Place(cpu), stop_gradient=True, # [[0 , 0 , 0 , 1 , 2 ], # [3 , 4 , 5 , 6 , 7 ], # [8 , 9 , 10, 11, 11]]) 
