Python 从元组列表创建稀疏矩阵

Python 从元组列表创建稀疏矩阵,python,python-3.x,matrix,Python,Python 3.x,Matrix,我有一个元组列表的数据,如下所示: data = [(18, 53), (42, 78),..., (132, 38)] 第一个和第二个元组数分别表示行和列的ID 使用这些数据,我想创建一个具有特定形状的矩阵(200150)。(行和列ID小于所需形状的数量) 如果(i,j)在列表中,则矩阵的元素为1。(即(18,53)=1,(42,78)=1,…(132,38)=1) 有人能帮我做这个吗?提前感谢您。这是您的问题的可能解决方案: import numpy as np import sys n

我有一个元组列表的数据,如下所示:

data = [(18, 53), (42, 78),..., (132, 38)]
第一个和第二个元组数分别表示行和列的ID

使用这些数据,我想创建一个具有特定形状的矩阵
(200150)
。(行和列ID小于所需形状的数量)

如果(i,j)在列表中,则矩阵的元素为1。(即(18,53)=1,(42,78)=1,…(132,38)=1)


有人能帮我做这个吗?提前感谢您。

这是您的问题的可能解决方案:

import numpy as np
import sys

np.set_printoptions(threshold=sys.maxsize)

dim_x = 200
dim_y = 150
data = [(18, 53), (42, 78), (132, 38)]
a = np.zeros((dim_x, dim_y), dtype = int)

for el in data:
    if el[0] < dim_x and el[1] < dim_y:
        a[el[0], el[1]] = 1
    
print(a)
将numpy导入为np
导入系统
np.set\u打印选项(阈值=sys.maxsize)
尺寸x=200
尺寸y=150
数据=[(18,53)、(42,78)、(132,38)]
a=np.zero((尺寸x,尺寸y),dtype=int)
对于el in数据:
如果el[0]

我不打算在这里复制输出,因为它很大,但我测试了它,似乎工作得很好

我认为这可能是解决方案

from scipy.sparse import csr_matrix
alist = [(18, 53), (42, 78), (132, 38)]

i, j, data = zip(*((i, t, t) for i, row in enumerate(alist) for t in row))


print(csr_matrix((data, (i, j)), shape=(200, 150)).todense())
您可以使用:

输出

  (18, 53)  1.0
  (42, 78)  1.0
  (132, 38) 1.0
预期用途为快速矩阵构造,见文件:

COO是一种构造稀疏矩阵的快速格式


你尝试了什么,为什么不起作用?“有人能帮我做这件事吗”在这里是离题的
  (18, 53)  1.0
  (42, 78)  1.0
  (132, 38) 1.0