张量流张量中的唯一非零元素

时间:2019-07-04 12:55:31

标签: python 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] 

1 个答案:

答案 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)))

尽管从原理上讲效率较低,因为先删除零然后查找唯一值,而不是相反。