【问题标题】:Filtering out zero matrices from tensor in numpy从numpy中的张量中过滤出零矩阵
【发布时间】:2018-07-21 18:52:44
【问题描述】:

我得到了大小为(30, 256, 256) 的 ML 算法的分割掩码张量。问题是,其中一些条目是零矩阵,我必须将它们过滤掉。现在我正在使用带有 np.array_equal 函数的基于循环的简单技术来手动过滤掉它们。

有没有办法在 NumPy 中使用一些花哨的索引更有效地做到这一点?

【问题讨论】:

  • 请注意,在 NumPy 中由 np.ndarray 表示的多维在某些框架之外通常不被称为“张量”(其中术语也容易混淆;你不会当您关心特定的基础时,不要将您的矩阵称为线性映射)。
  • 如果@fuglede 的答案不正确,您需要详细说明,可能包括该naive loop 的代码。我们可以猜到您所说的tensorzero matrices 是什么意思,但不能确定。如前所述,numpy 具有各种大小和维度的数组。它没有正式定义tensormatrixnp.matrix 子类除外)。

标签: python numpy


【解决方案1】:

如果a 是你的数组,你可以这样做

a[np.any(a != 0, (1, 2))]

【讨论】:

    【解决方案2】:

    只需遍历您的矩阵并使用函数count_non_zero() 来有效地检查矩阵是否为零矩阵。

    import numpy as np
    
    for matrix in tensor:
      if np.count_nonzero(matrix) != 0:
         #keep in your tensor
      else:
         #remove from your tensor
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 2017-08-09
      • 1970-01-01
      • 1970-01-01
      • 2017-06-30
      • 1970-01-01
      • 2021-12-12
      相关资源
      最近更新 更多