【发布时间】:2019-08-19 18:08:53
【问题描述】:
我有一个数组,其中每行数据都遵循顺序,由末尾的标签列标识。举个小例子,它的格式是这样的:
arr = [[1,2,3,1],
[2,3,4,1],
[3,4,5,1],
[4,5,6,2],
[5,6,7,2],
[7,8,9,2],
[9,10,11,3]]
我想使用标签列作为分组标记将数组分成组。所以上面的数组会产生3个数组:
arrA = [[1,2,3,1],
[2,3,4,1],
[3,4,5,1]]
arrB = [[4,5,6,2],
[5,6,7,2],
[7,8,9,2]]
arrC = [9,10,11,3]
我目前有这个 FOR 循环,将每个组数组存储在 wins 列表中:
wins = []
for w in range(1, arr[-1,3]+1):
wins.append(arr[arr[:, 3] == w, :])
这项工作没问题,但我有几个大型数据集要处理,所以有没有一种矢量化的方法可以做到这一点,也许可以使用 numpy 库中的 diff() 或 where()?
【问题讨论】:
-
@Georgy,您提供的链接中的答案通过简单的索引修改对我有用,谢谢。所以我会将我的问题标记为重复
标签: python arrays split vectorization