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个零-对吗?