gpt4 book ai didi

python - 遍历两个数组在字典中查找值

转载 作者:行者123 更新时间:2023-11-28 21:54:54 25 4
gpt4 key购买 nike

所以我有一本字典:

LCM_SCS = { 
(1, "A"): 36, (1, "B"): 60, (1, "C"): 73, (1, "D"): 79,
(2, "A"): 36, (2, "B"): 60, (2, "C"): 73, (2, "D"): 79,
(3, "A"): 74, (3, "B"): 83, (3, "C"): 88, (3, "D"): 90,
(4, "A"): 68, (4, "B"): 79, (4, "C"): 86, (4, "D"): 89,
(5, "A"): 30, (5, "B"): 58, (5, "C"): 71, (5, "D"): 78,
(6, "A"): 39, (6, "B"): 61, (6, "C"): 74, (6, "D"): 80,
(7, "A"): 39, (7, "B"): 61, (7, "C"): 74, (7, "D"): 80,
(8, "A"): 39, (8, "B"): 61, (8, "C"): 74, (8, "D"): 80,
(10, "A"): 30, (10, "B"): 48, (10, "C"): 65, (10, "D"): 73,

我还有两个数组,它们组合起来为我上面的字典提供了元组键:

数组 1:

array1 = np.array([[1, 1, 1],
[2, 2, 3],
[2, 4, 5]])

数组 2:

array2 = np.array([["A", "A", "A"],
["B", "B", "B"],
["C", "C", "C"]])

我的代码是:

Numbers = np.empty_like(array1)


for [x, y], (value1, value2) in np.ndenumerate(izip(array1, array2)):
CN_numbers[x, y] = LCM_SCS.get((value1, value2))

return Numbers

此代码无效。我想要得到的是一个如下所示的数组:

Numbers = array([[36, 36, 36],
[60, 60, 83],
[73, 86, 71]])

所以基本上我有两个数组,其中包含要用作我的查找字典的键的值,我不确定如何在代码中实现它。

如有任何建议或帮助,我们将不胜感激。

谢谢,

尼克

使用向量化的解决方案:

a_new = np.empty_like(array1)

def get_CN_numbers(a1, a2):
return LCM_SCS[(a1, a2)] # your basic scalar-operation

V_get_CN = np.vectorize(get_CN_numbers)

a_new = V_get_CN(array1, array2)

print a_new

最佳答案

vectorize

@numpy.vectorize
def get_CN_numbers(a1, a2):
return LCM_SCS[(a1,a2)] # your basic scalar-operation

get_CN_numbers(array1, array2)
=>
array([[36, 36, 36],
[60, 60, 83],
[73, 86, 71]])

通常,使用 vectorize 是扩展标量操作(在您的情况下,通过标量键从字典中获取值)以处理数组(在您的情况下,两个键数组)。正如您已经发现的那样,vectorize 为您处理的棘手部分是保持形状。

这提供了简单性,但不一定是速度,因为 vectorize 是使用 python 空间循环实现的。

关于python - 遍历两个数组在字典中查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23413488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com