我有一个类似于下面的矩阵。我想创建一个函数,在其中传入两个字母(" A"和#34; B")然后查找并返回在行A中找到的值到B列单元格(这将是2)。目前正在使用numpy。
"A" "B" "C"
"A" 0 2 3
"B" 2 0 4
"C" 0 4 0
答案 0 :(得分:0)
你可以先创建一个小帮手来从字母中获取数组坐标:
import string
import numpy as np
x = np.array([[0, 2, 3], [2, 0, 4], [0, 4, 0]], np.int64)
mapping = {letter:idx for (idx, letter) in enumerate(string.ascii_uppercase)}
def coords(letter1, letter2):
""" assuming that the letters are always uppercase """
return mapping[letter1], mapping[letter2]
# now to get what you wanted:
result = x[coords('A', 'B')]
# or really short method:
result = x[string.ascii_uppercase.index('A'), string.ascii_uppercase.index('B')]
print result
输出:
2
您还可以跳过构建映射,只需执行string.ascii_uppercase.index(<letter>)
但如果您真正密切使用coords
帮助程序,那么映射会有所帮助。