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 保持TrueFalse 形状相同的张量,在以下情况下

[[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求第一个非零值怎么写的主要内容,如果未能解决你的问题,请参考以下文章

如何计算sql中包含非零值的行

如果任何命令返回非零值,则中止 shell 脚本

为啥 Keras Dropout 中的非零值会发生变化?

使用非零值初始化可选的 @AppStorage 属性

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

用 0 初始化的 int 向量给出非零值