回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>所以我有一本字典:</p>
<pre><code>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,
</code></pre>
<p>我还有两个数组组合在一起,为上面的字典提供tuple键:</p>
<p>阵列1:</p>
^{pr2}$
<p>阵列2:</p>
<pre><code>array2 = np.array([["A", "A", "A"],
["B", "B", "B"],
["C", "C", "C"]])
</code></pre>
<p>我的代码是:</p>
<pre><code>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
</code></pre>
<p>这个代码行不通。我想要的是一个如下所示的数组:</p>
<pre><code>Numbers = array([[36, 36, 36],
[60, 60, 83],
[73, 86, 71]])
</code></pre>
<p>所以本质上我有两个数组,其中包含的值用作查找dict的键,我不确定如何在代码中实现这一点。在</p>
<p>如有任何建议或帮助,我们将不胜感激。在</p>
<p>谢谢</p>
<p>尼克</p>
<p>使用向量的解决方案:</p>
<pre><code>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
</code></pre>