从行和列标题中查找值

时间:2016-04-08 18:55:15

标签: python numpy

我有一个类似于下面的矩阵。我想创建一个函数,在其中传入两个字母(" A"和#34; B")然后查找并返回在行A中找到的值到B列单元格(这将是2)。目前正在使用numpy。

    "A"     "B"     "C"
"A"  0       2       3
"B"  2       0       4
"C"  0       4       0

1 个答案:

答案 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帮助程序,那么映射会有所帮助。