Python 如何删除tensorflow中的连续重复项?

Python 如何删除tensorflow中的连续重复项?,python,tensorflow,duplicates,unique,tensor,Python,Tensorflow,Duplicates,Unique,Tensor,例如,输入一维张量: l_in = [1,1,2,2,3,4,5,5,1,3,5] 我想删除连续的重复项,这意味着输出应该是: l_out = [1,2,3,4,5,1,3,5] 但是,tf.unique函数只返回unique元素,表示最后三个元素也将被删除。tf.unique的输出为: [1,2,3,4,5], [0,0,1,1,2,3,4,4,0,2,4] = tf.unique(l_in) 其中第二项是相应的ID 有没有办法只删除连续的重复项,同时保留非重复和非唯一的元素?不知道te

例如,输入一维张量:

l_in = [1,1,2,2,3,4,5,5,1,3,5]
我想删除连续的重复项,这意味着输出应该是:

l_out = [1,2,3,4,5,1,3,5]
但是,
tf.unique
函数只返回unique元素,表示最后三个元素也将被删除。
tf.unique的输出为:

[1,2,3,4,5], [0,0,1,1,2,3,4,4,0,2,4] = tf.unique(l_in)
其中第二项是相应的ID


有没有办法只删除连续的重复项,同时保留非重复和非唯一的元素?

不知道tensorflow,但由于它似乎是一个简单的列表,您可以很容易地从itertools中使用groupby:

from itertools import groupby  
l_out = [x[0] for x in groupby(l_in)]
print(l_out) # prints [1, 2, 3, 4, 5, 1, 3, 5]

另请参见:

有关1D张量,使用数组旋转/移位:

将tensorflow导入为tf
l_in=tf.常数([1,1,2,2,3,4,5,5,1,3,5])
左移位=tf.concat([1:],[0]),轴=0)
掩码左移位=tf.不相等(左移位,0)
掩码=tf.concat(([True],掩码左移[:-1]),轴=0)
l_out=tf.boolean_掩码(l_in,掩码)
使用tf.Session()作为sess:
打印(sess.run(l_out))
# [1 2 3 4 5 1 3 5]

(也就是说,我们的想法是将每个元素与其右邻域相减,如果减法结果为0,则将其屏蔽)

谢谢您提供的信息。在我开始这个问题之前,我已经注意到了这个答案,但在tensorflow中我没有找到相应的解决方案。非常感谢!这是一个简洁而绝妙的主意!我不会说谎,但这是一个非常聪明的解决方案。遗憾的是,即使在这么多年之后,TensorFlow团队仍然无法提供一个独立的功能来实现这一点。干杯