【问题标题】:Extracting classes from numpy array从numpy数组中提取类
【发布时间】:2020-05-17 21:28:02
【问题描述】:

我有一个 numpy 数据数组

data = np.random.random((5, 5))

另一个相同形状的 numpy 数组用 0n 的类掩盖第一个数组:

>>> mask
array([[3, 3, 1, 1, 0],
       [2, 0, 1, 2, 2],
       [0, 1, 0, 0, 3],
       [2, 1, 1, 0, 2],
       [0, 2, 3, 0, 2]])

计算具有n 行的二维数组的最佳方法是什么,其中每一行包含来自data 的所有元素,类row_idx(由mask 描述)?

【问题讨论】:

  • 请显示结果数组示例
  • data[ mask == 1 ] 如何获取掩码中包含1 的所有值。

标签: python python-3.x numpy mask


【解决方案1】:

你不能比O(n^2) 做得更好,因为你应该遍历所有mask 数组。由于每个类中的元素数量可能不同,因此结果不能是 numpy 数组(行具有不同的大小)。所以我认为你不能在这里用纯 numpy 函数来避免 python 循环。我建议这个O(n^2) 解决方案:

ans = [[] for i in range(mask.max() + 1)]
for k, v in np.ndenumerate(mask):
    ans[v].append(data[k])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-15
    • 2014-12-21
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2015-10-10
    • 1970-01-01
    相关资源
    最近更新 更多