假设我有一个 tensorflow 张量 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]
请您参考如下方法:
在 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)))
虽然原则上效率较低,因为您首先要删除零,然后找到唯一值,而不是相反。
