Python 2.7 Python:将元组转换为数组

Python 2.7 Python:将元组转换为数组,python-2.7,tuples,sparse-matrix,Python 2.7,Tuples,Sparse Matrix,目前,我有一个元组列表,如下所示: [(0, 0.13), (323, 0.72), (812, 0.35), ..., (2127, 0.44)] 元组按其第一个元素排序:0->323->812-> 我想将这个元组列表转换为一个数组(或稀疏matrx),每个元组的第一个元素是第二个元素的数组索引: [0.13, 0, ..., 0, 0.72, 0, ..., 0, 0.35, 0, ...] 并用0填充此数组的结尾,以将其扩展到特定长度 有人能用python提供上述函数的快速实现吗 我

目前,我有一个元组列表,如下所示:

[(0, 0.13), (323, 0.72), (812, 0.35), ..., (2127, 0.44)]
元组按其第一个元素排序:0->323->812->

我想将这个元组列表转换为一个数组(或稀疏matrx),每个元组的第一个元素是第二个元素的数组索引:

[0.13, 0, ..., 0, 0.72, 0, ...,  0, 0.35, 0, ...]
并用0填充此数组的结尾,以将其扩展到特定长度

有人能用python提供上述函数的快速实现吗

我目前使用一个字典来完成这个过程,对于大型数组来说速度非常慢


谢谢。

我想这可以满足您的要求:

results = []
for k,i in list_of_tuples:
  while k > len(results):
     results.append(0)
  results.append(i)
下面是一个示例运行,给定输入
[(0,12)、(5,43)、(10,1)]
,结果如下:

>>> i = []
>>> for k,v in t:
...    while k > len(i):
...       i.append(0)
...    i.append(v)
...
>>> i
[12, 0, 0, 0, 0, 43, 0, 0, 0, 0, 1]

您可以预先分配一个零数组,然后填写提供的数字:

def expand_sparse_array(inp):
    length = (inp[-1][0]+1) # index of last element + 1
    out = [0]*length

    for (idx, val) in inp:
        out[idx] = val

    return out
例如:

>>> expand_sparse_array([(0, 0.13), (3, 0.72), (5, 0.35), (10, 0.44)])
[0.13, 0, 0, 0.72, 0, 0.35, 0, 0, 0, 0, 0.44]

如果我理解正确,您希望创建一个数组,其中0作为缺少的索引的占位符;所以在0.13和0.72之间,有322个零-对吗?