【发布时间】:2011-06-10 17:38:58
【问题描述】:
我刚开始学习用 Python 编程,我正在尝试使用 Scipy 包构建一个稀疏矩阵。我发现有不同类型的稀疏矩阵,但它们都需要使用行、列、数据等三个向量来存储;或者,如果您想分别输入每个新条目,例如 S(i,j) = s_ij,您需要以给定的大小启动矩阵。
我的问题是,是否有一种方法可以在不需要初始大小的情况下逐项存储矩阵,例如字典。
【问题讨论】:
标签: python scipy sparse-matrix
我刚开始学习用 Python 编程,我正在尝试使用 Scipy 包构建一个稀疏矩阵。我发现有不同类型的稀疏矩阵,但它们都需要使用行、列、数据等三个向量来存储;或者,如果您想分别输入每个新条目,例如 S(i,j) = s_ij,您需要以给定的大小启动矩阵。
我的问题是,是否有一种方法可以在不需要初始大小的情况下逐项存储矩阵,例如字典。
【问题讨论】:
标签: python scipy sparse-matrix
没有。 Scipy 中的任何矩阵,无论是否稀疏,都必须使用大小进行实例化。
【讨论】:
max 快速找到最大索引。
您可以使用通常的字典,将两个整数的元组作为索引。例如:
matrix = {}
matrix[5, 7] = 1
matrix[3, 8] = 5
【讨论】:
matrix[5, 7] = 1 更简洁,但没有那么明确
defaultdict 或 defaultdicts 可以替代对列表列表的任何操作,但它也可能比完全填充的列表列表使用更多的内存。
dic={}
a,b=int(input("Enter the order:")),int(input())
for i in range(a):
for j in range(b):
c=int(input())
if c!=0:
dic[(i,j)]=c
if len(dic)<=(a+b)/2:
print("sparse metrix")
else:
print("non sparse metrix")
for i in range(a):
for j in range(b):
print(dic.get((i,j),0),end=" ")
print()
【讨论】: