tf.setdiff1d(x, y, index_dtype=tf.int32, name=None)

tf.setdiff1d(x, y, index_dtype=tf.int32, name=None)

See the guides: Math > Sequence Comparison and Indexing, Tensor Transformations > Slicing and Joining

Computes the difference between two lists of numbers or strings.

Given a list x and a list y, this operation returns a list out that represents all values that are in x but not in y. The returned list out is sorted in the same order that the numbers appear in x (duplicates are preserved). This operation also returns a list idx that represents the position of each out element in x. In other words:

out[i] = x[idx[i]] for i in [0, 1, ..., len(out) - 1]

For example, given this input:

x = [1, 2, 3, 4, 5, 6]
y = [1, 3, 5]

This operation would return:

out ==> [2, 4, 6]
idx ==> [1, 3, 5]


  • x: A Tensor. 1-D. Values to keep.
  • y: A Tensor. Must have the same type as x. 1-D. Values to remove.
  • out_idx: An optional tf.DType from: tf.int32, tf.int64. Defaults to tf.int32.
  • name: A name for the operation (optional).


A tuple of Tensor objects (out, idx). * out: A Tensor. Has the same type as x. 1-D. Values present in x but not in y. * idx: A Tensor of type out_idx. 1-D. Positions of x values preserved in out.

Defined in tensorflow/python/ops/