MATLAB求第一个非零值怎么写
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB求第一个非零值怎么写相关的知识,希望对你有一定的参考价值。
参考技术A 假如数组为A那就find(A~=0,1,'first')本回答被提问者采纳 参考技术B row, col] = find( R ~= 0 ); % row,col是所有非零元素的横坐标和纵坐标 参考技术C U = unique(r(r~=0));
U(U==0) = [];
list = [];
for i = 1 : length(U)
list = [list find(r==U(i),1,'first')];
end
list就是结果了。
在 TensorFlow 中,如何使用 python 从张量中获取非零值及其索引?
【中文标题】在 TensorFlow 中,如何使用 python 从张量中获取非零值及其索引?【英文标题】:In TensorFlow, how can I get nonzero values and their indices from a tensor with python? 【发布时间】:2017-01-06 06:16:59 【问题描述】:我想做这样的事情。 假设我们有一个张量 A。
A = [[1,0],[0,4]]
我想从中获取非零值及其索引。
Nonzero values: [1,4]
Nonzero indices: [[0,0],[1,1]]
在 Numpy 中也有类似的操作。np.flatnonzero(A)
在展平的 A 中返回非零索引。x.ravel()[np.flatnonzero(x)]
根据非零索引提取元素。
以下是这些操作的 a link。
如何使用 python 在 Tensorflow 中执行上述 Numpy 操作? (矩阵是否展平并不重要。)
【问题讨论】:
【参考方案1】:您可以使用not_equal 和where 方法在Tensorflow 中获得相同的结果。
zero = tf.constant(0, dtype=tf.float32)
where = tf.not_equal(A, zero)
where
是与A
保持True
或False
形状相同的张量,在以下情况下
[[True, False],
[False, True]]
这足以从A
中选择零或非零元素。如果要获取索引,可以使用where
方法,如下:
indices = tf.where(where)
where
张量有两个 True
值,因此 indices
张量将有两个条目。 where
张量的秩为二,因此条目将有两个索引:
[[0, 0],
[1, 1]]
【讨论】:
如何从布尔矩阵中得到数组?我认为布尔索引尚未实现 @martianwars 查看where
文档的链接。它接受布尔值并产生对应索引的张量。
不,我指的是那些索引处的值。我使用布尔掩码做到了
你怎样才能得到完全为零的行的索引?
re "我想获得非零值" 请展示如何获取这些索引处的值。谢谢【参考方案2】:
#assume that an array has 0, 3.069711, 3.167817.
mask = tf.greater(array, 0)
non_zero_array = tf.boolean_mask(array, mask)
【讨论】:
负值也可以是非零。这不是返回索引。以上是关于MATLAB求第一个非零值怎么写的主要内容,如果未能解决你的问题,请参考以下文章