说我有一个张量流张量A
,我想知道是否存在一个单一的线性变量来查找A
中除0
以外的所有唯一值(或更实际的是,这样做的简短方法)。
越多的pythonic将会非常相似:
import numpy as np
A = np.array([2,2,2,0,1,3,3])
unique = np.unique(A)
unique = [x for x in unique if x!=0]
print(unique)
>>> [2,1,3]
答案 0 :(得分:1)
在TensorFlow中,您可以这样做:
import tensorflow as tf
with tf.Graph().as_default(), tf.Session() as sess:
data = tf.placeholder(tf.int32, [None])
data_unique, _ = tf.unique(data)
data_unique_nonzero = tf.boolean_mask(data_unique, tf.not_equal(data_unique, 0))
print(sess.run(data_unique_nonzero, feed_dict={data: [2,2,2,0,1,3,3]}))
# [2, 1, 3]
单线执行,您可以这样做:
data_unique_nonzero, _ = tf.unique(tf.boolean_mask(data, tf.not_equal(data, 0)))
尽管从原理上讲效率较低,因为先删除零然后查找唯一值,而不是相反。