【发布时间】:2021-03-22 02:49:35
【问题描述】:
输入:有两个输入数组:
value_array = [56, 10, 65, 37, 29, 14, 97, 46]
index_array = [ 0, 0, 1, 0, 3, 0, 1, 1]
输出:我想在不使用 for 循环的情况下使用 index_array 拆分 value_array。所以输出数组将是:
split_array = [[56, 10, 37, 14], # index 0
[65, 97, 46], # index 1
[], # index 2
[29]] # index 3
有什么方法可以在不使用任何 for 循环的情况下使用 numpy 来做到这一点?我看过numpy.where,但不知道该怎么做。
For 循环:这是使用 for 循环的方法。我想避免for循环。
split_array = []
for i in range(max(index_array) + 1):
split_array.append([])
for i in range(len(value_array)):
split_array[index_array[i]].append(value_array[i])
【问题讨论】:
-
你有一个带有循环的工作版本吗?
-
@ivan 添加了带有 for 循环的代码。
-
由于
split_array是一个包含不同长度的数组/列表的列表,因此您无法避免 Python 级别的循环(即使它隐藏在np.split函数中)。传说中的no-loop操作仅限于整个数组(或切片)并返回整个(数字)数组,而不是列表列表。
标签: python arrays numpy for-loop