Ale*_* V. 2 python arrays numpy
我有一个像这样的数组:
arr = np.array([1, 2, 3, 4, -5, -6, 3, 5, 1, -2, 5, -1, -1, 10])
Run Code Online (Sandbox Code Playgroud)
我想删除所有负值,并在存在负值的每个索引处拆分数组。结果应该是这样的:
split_list = [[1, 2, 3, 4], [3, 5, 1], [5], [10]]
Run Code Online (Sandbox Code Playgroud)
我知道如何使用列表理解来做到这一点,但由于数组可能变得很大并且我必须进行多次计算,所以我想使用 numpy 找到一个解决方案。我发现了这个https://www.geeksforgeeks.org/python-split-list-into-lists-by-prefer-value/,我可以用它来分割存在负值的数组,但我不能同时进行删除它们。
请注意,您可以使用itertools.groupby这种方式而不是 numpy (不过,根据这一点进行判断:使用 itertools.groupby 性能进行 NumPy 分组,纯 numpy 可能会更有效):
import numpy as np
from itertools import groupby
arr = np.array([1, 2, 3, 4, -5, -6, 3, 5, 1, -2, 5, -1, -1, 10])
split_list = [list(group) for key, group in groupby(arr, key=lambda x:x>=0) if key]
# [[1, 2, 3, 4], [3, 5, 1], [5], [10]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |