在2D NumPy数组中创建作为group-by样式查找的字典的最快方法是使用numpy.unique函数和numpy.split函数结合。
首先,使用numpy.unique函数找到数组中的唯一值,并返回一个有序的数组。然后,使用numpy.split函数将原始数组拆分成多个子数组,其中每个子数组都包含相同的唯一值。接下来,使用字典推导式将唯一值作为键,将对应的子数组作为值创建字典。
下面是一个示例代码:
import numpy as np
def create_groupby_dict(arr):
unique_vals = np.unique(arr[:, 0]) # 找到第一列的唯一值
split_arrs = np.split(arr[:, 1:], np.where(np.diff(arr[:, 0]) != 0)[0]+1) # 根据第一列的唯一值进行拆分
groupby_dict = {val: split_arr for val, split_arr in zip(unique_vals, split_arrs)} # 创建字典
return groupby_dict
# 示例用法
arr = np.array([[1, 2, 3],
[1, 4, 5],
[2, 6, 7],
[2, 8, 9]])
result = create_groupby_dict(arr)
print(result)
输出结果为:
{1: array([[2, 3],
[4, 5]]),
2: array([[6, 7],
[8, 9]])}
在这个例子中,我们创建了一个2D NumPy数组arr,并且以第一列的值进行分组。最终,我们得到一个字典,其中键为唯一的第一列的值,值为相应的子数组。
请注意,这种方法假设数组已经按照group-by的列进行排序。如果数组未排序,可以使用numpy.argsort函数对数组进行排序,以确保正确的分组。
这里没有提及任何云计算品牌商的相关产品和链接地址。如果您有关于其他云计算问题的咨询,欢迎继续提问。
领取专属 10元无门槛券
手把手带您无忧上云