python - 基于单独的标签数组拆分 numpy 2D 数组

标签 python arrays numpy

我有一个二维 numpy 数组 A .例如:

A = np.array([[1, 2],
              [3, 4],
              [5, 6],
              [7, 8],
              [9, 0]])
我有另一个标签数组 B对应于 A 的行.例如:
B = np.array([0, 1, 2, 0, 1])
我要拆分A根据它们的标签分成 3 个数组,所以结果是:
[[[1, 2],
  [7, 8]],
 [[3, 4],
  [9, 0]],
 [[5, 6]]]
是否有任何 numpy 内置函数来实现这一点?
现在,我的解决方案相当丑陋,涉及重复调用 numpy.wherefor -loop,并将索引元组切片以仅包含行。

最佳答案

这是一种方法:

  • hstack两者的阵列在一起。
  • sort array来自 the last column
  • split array基于 unique值(value) index
  • a = np.hstack((A,B[:,None]))
    a = a[a[:, -1].argsort()]
    a = np.split(a[:,:-1], np.unique(a[:, -1], return_index=True)[1][1:])
    
    输出:
    [array([[1, 2],
            [7, 8]]),
     array([[3, 4],
            [9, 0]]),
     array([[5, 6]])]
    

    关于python - 基于单独的标签数组拆分 numpy 2D 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68331835/

    相关文章:

    对象内部的 Java 数组

    python - 有效地居中和叠加 numpy 数组

    python - 应用 "group by"后选择第一个或最后一个 n 组

    python - super() 在 Sublime Text 中抛出错误,在 PyCharm/Terminal 中有效

    python - C++ 嵌入式 Python PyBytes_AsString 导致 DLL 崩溃

    python - 计算数据框中唯一共同作者的数量

    python - 如何在Django View 中知道并引发确切异常

    python - 你如何将 numpy 数组中的图像集合 reshape 为一个大图像?

    php - PHP 中 FOR 与 FOREACH 的性能

    python - 通过指定行/列从现有矩阵创建新矩阵