【发布时间】:2020-01-29 15:16:37
【问题描述】:
对于沿axis=0 堆叠的 2 个或多个 2D 整数 numpy 数组,我感兴趣:
- 沿第三个标识所有唯一的数字组合 方面。
- 用新的数值标记每个组合 ('标签')
- 生成一个新的二维数组,其中数组值是表示源数组的数值组合的标签。
样本数据:
import numpy as np
arr1 = np.array(np.random.randint(low=0, high=4, size=25)).reshape(5,5)
arr2 = np.array(np.random.randint(low=0, high=4, size=25)).reshape(5,5)
可以获得感兴趣组合的元组列表:
xx, yy = np.meshgrid(arr1, arr2, sparse=True)
combis = np.stack([xx.reshape(arr1.size), yy.reshape(arr2.size)])
u_combis = np.unique(combis, axis=1)
u_combis_lst = list(map(tuple, u_combis.T))
生成字典以将每个组合映射到标签:
labels = [x for x in range(0, len(u_combis_lst))]
label_dict = dict(zip(u_combis_lst, labels))
现在,要点 1 和 2 似乎已实现。我的问题是:
- 如何将
label_dict应用于arr1和arr2组合? - 如何改进我的代码建议?
- 如何使代码适用于 > 2 个数组?
为了完整起见,我的目标是在Arcgis Pro 中重新创建'combine' 函数的功能。
【问题讨论】: