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