首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在TensorFlow中,如何使用python从张量中获取非零值及其索引?

在TensorFlow中,如何使用python从张量中获取非零值及其索引?
EN

Stack Overflow用户
提问于 2016-08-30 13:34:07
回答 2查看 33.2K关注 0票数 33

我想做这样的事情。

假设我们有一个张量A。

代码语言:javascript
复制
A = [[1,0],[0,4]]

我想从中得到非零值和它们的索引。

代码语言:javascript
复制
Nonzero values: [1,4]  
Nonzero indices: [[0,0],[1,1]]

在Numpy中也有类似的操作。

在展平的A中,np.flatnonzero(A)返回非零的索引。

x.ravel()[np.flatnonzero(x)]根据非零索引提取元素。

下面是这些操作的a link

我如何用python在Tensorflow中做类似上面的Numpy操作呢?

(矩阵是否展平并不重要。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-30 17:15:54

您可以使用not_equalwhere方法在Tensorflow中实现相同的结果。

代码语言:javascript
复制
zero = tf.constant(0, dtype=tf.float32)
where = tf.not_equal(A, zero)

在以下情况下,where是与A holding TrueFalse形状相同的张量

代码语言:javascript
复制
[[True, False],
 [False, True]]

这足以从A中选择零或非零元素。如果您想获取索引,可以使用where方法,方法如下:

代码语言:javascript
复制
indices = tf.where(where)

where张量有两个True值,因此indices张量将有两个条目。where张量的等级为2,因此条目将有两个索引:

代码语言:javascript
复制
[[0, 0],
 [1, 1]]
票数 48
EN

Stack Overflow用户

发布于 2018-05-11 15:20:25

代码语言:javascript
复制
#assume that an array has 0, 3.069711,  3.167817.
mask = tf.greater(array, 0)
non_zero_array = tf.boolean_mask(array, mask)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39219414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档