给定两个numpy数组,如何基于第二个数组将其中一个拆分为列表数组

0tdrvxhp  于 2023-02-16  发布在  其他
关注(0)|答案(1)|浏览(115)

我有两个numpy数组:一个包含任意值,另一个包含大于1的整数。整数之和等于第一个数组的长度。示例:

values = np.array(["a", "b", "c", "d", "e", "f", "g", "h"])
lengths = np.array([1, 3, 2, 2])
len(values) == sum(lengths) # True

我想根据第二个数组的长度拆分第一个数组,最后得到如下结果:

output = np.array([["a"], ["b", "c", "d"], ["e", "f"], ["g", "h"]], dtype=object)

用Python循环迭代数组很容易,但当两个列表都很大(数亿个元素)时,迭代速度也很慢,有没有一种方法可以使用本机numpy操作来完成这个操作,这样应该会更快?

e5nqia27

e5nqia271#

可以使用numpy中的split方法:

output = np.split(values, np.cumsum(lengths))[:-1]

相关问题