Python 3.x 通过行和列键快速访问矩阵

Python 3.x 通过行和列键快速访问矩阵,python-3.x,pandas,numpy,Python 3.x,Pandas,Numpy,我有这样一个矩阵 id = (123, 979, 234) matrix: 123 979 234 123 0 30 45 979 30 0 60 234 15 45 0 我的问题是,我想以一种快速简单的方式访问矩阵。大概是这样的: 矩阵[id][id] 例如: 打印(矩阵[123][979]) 产出30 现在我使用的是一个列表,包括一个列表。因此,我可以通过了解位置来访问数据。这不是很舒服,因为我不知道位置,我只知道id。现在我正在使用

我有这样一个矩阵

id = (123, 979, 234)

 matrix: 

    123  979  234
123  0   30    45
979  30   0    60
234  15   45    0
我的问题是,我想以一种快速简单的方式访问矩阵。大概是这样的:

矩阵[id][id]

例如:

打印(矩阵[123][979])

产出30

现在我使用的是一个列表,包括一个列表。因此,我可以通过了解位置来访问数据。这不是很舒服,因为我不知道位置,我只知道id。现在我正在使用一个函数来给我正确的号码。这是非常缓慢的,我需要一个有很多迭代的计算

有人有办法快速解决这个问题吗

现在计算矩阵的函数如下,但它只是0或30*60秒。我想创建一个单独时间的新矩阵,但在编码之前,我想弄清楚,我可以用什么方式存储数据,以便快速方便地访问

def get_matrix(permutation):

criteria = [django_model1.objects.filter(id=id).get().django_model2.format for id in permutation]

# and to speed up: an ugly combination of 2 list comprehensions and a lambda function. 
return [[(lambda c1, c2: timedelta(seconds = 0 ) if c1==c2 else timedelta(seconds = 30*60 )) (c1,c2) for c2 in criteria] for c1 in criteria ]

使用熊猫:

data = [[0, 30, 45], [30, 0, 60], [15, 45, 0]]
ids = [123, 979, 234]
df = pd.DataFrame(data, columns = ids, index = ids)
数据
可以通过多种方式构建:取决于您构建矩阵的方式。有关更多信息,请参阅

现在,请按id引用:

>>> df[979][123]
30

注意:id的顺序颠倒,因为
pandas
将列id作为第一个索引。

请举例说明您正在访问的内容。一个号码?数字列表?这有帮助吗?当然。那么它是一个numpy数组还是一个pandas数据帧呢?你能分享创建“矩阵”的代码吗?我只使用普通列表。但是等一下,我会举个例子…完成了。。。我希望它不会太令人困惑,它太棒了!!!我从1分43秒加速到9秒。只需像这样访问数据,而不是调用函数。