给定一个 (5,2) 张量,删除第二列中重复的行
Given a (5,2) tensor, delete rows that have duplicates in the second column
所以,假设我有这样的张量:
[[0,18],
[1,19],
[2, 3],
[3,19],
[4, 18]]
我只需要使用 tensorflow 删除第二列中包含重复项的行。最终输出应该是这样的:
[[0,18],
[1,19],
[2, 3]]
你应该可以用 tf.math.unsorted_segment_min
和 tf.gather
解决这个问题:
import tensorflow as tf
x = tf.constant([[0,18],
[1,19],
[2, 3],
[3,19],
[4, 18]])
y, idx = tf.unique(x[:, 1])
indices = tf.math.unsorted_segment_min(tf.range(tf.shape(x)[0]), idx, tf.shape(y)[0])
result = tf.gather(x, indices)
print(result)
tf.Tensor(
[[ 0 18]
[ 1 19]
[ 2 3]], shape=(3, 2), dtype=int32)
下面是调用 tf.unique
后发生的事情的简单解释:
所以,假设我有这样的张量:
[[0,18],
[1,19],
[2, 3],
[3,19],
[4, 18]]
我只需要使用 tensorflow 删除第二列中包含重复项的行。最终输出应该是这样的:
[[0,18],
[1,19],
[2, 3]]
你应该可以用 tf.math.unsorted_segment_min
和 tf.gather
解决这个问题:
import tensorflow as tf
x = tf.constant([[0,18],
[1,19],
[2, 3],
[3,19],
[4, 18]])
y, idx = tf.unique(x[:, 1])
indices = tf.math.unsorted_segment_min(tf.range(tf.shape(x)[0]), idx, tf.shape(y)[0])
result = tf.gather(x, indices)
print(result)
tf.Tensor(
[[ 0 18]
[ 1 19]
[ 2 3]], shape=(3, 2), dtype=int32)
下面是调用 tf.unique
后发生的事情的简单解释: