【问题标题】:How to Implement the Sparse matrix in python如何在python中实现稀疏矩阵
【发布时间】:2021-11-23 14:48:54
【问题描述】:

听说我正在接受用户输入矩阵

print("Enter values for matrix ")
a = []
m = int(input("Number of rows, m = "))
n = int(input("Number of columns, n = "))

for i in range(m):
    l = []
    for j in range(n):
        l.append(int(input("Entry in row: {} column: {}\n".format(i+1,j+1))))
    a.append(l)

print("Matrix - =",a) 

如果用户输入是 输入矩阵的值 行数,m = 2 列数,n = 3 行中条目:1 列:1 1 行中条目:1 列:2 2 行中条目:1 列:3 3 行中条目:2 列:1 4 行中条目:2 列:2 5 行中条目:2 列:3 6 矩阵 - = [[1, 2, 3], [4, 5, 6]]

我正在尝试稀疏矩阵以打印 稀疏矩阵: 001 012 023 104 115 126

【问题讨论】:

  • 您刚刚展示了从用户那里获取矩阵元素的方式,请展示您为制作稀疏矩阵所做的工作。
  • 稀疏矩阵的全部意义在于您不会遍历(或存储或以其他方式处理)所有元素,只有非零元素

标签: python python-3.x matrix sparse-matrix


【解决方案1】:

您还需要将行、列值添加到“l”变量,然后在第二个循环内将其重置。追加 'l' 应该发生在第二个循环中

print("Enter values for matrix ")
a = []
m = int(input("Number of rows, m = "))
n = int(input("Number of columns, n = "))

for i in range(m):
    for j in range(n):
        l = []
        l.append(i)
        l.append(j)
        l.append(int(input("Entry in row: {} column: {}\n".format(i+1,j+1))))
        a.append(l)

print("Matrix - =",a) 

输出

Matrix - = [[0, 0, 1], [0, 1, 2], [0, 2, 3], [1, 0, 4], [1, 1, 5], [1, 2, 6]]

【讨论】:

  • 这既不是稀疏矩阵也不是作为稀疏矩阵处理的?
  • 我试图匹配 OP 所需的输出。我理解它不是稀疏矩阵,但我的尝试只是产生预期的输出。
【解决方案2】:

要在python中使用稀疏矩阵,只需安装 scipy library。 以下是如何将其与 numpy 一起使用的示例。

# Load libraries
import numpy as np

from scipy import sparse

# Create a matrix
matrix = np.array([[0,0],[0,1],[3,0]])

# Create a compressed sparse row (CSR) matrix
matrix_sparse = sparse.csr_matrix(matrix)

# View sparse matrix 
print(matrix_sparse)

【讨论】:

    【解决方案3】:

    这是获取矩阵值的更好方法。

    rows, cols = map(int, input("Enter the number of rows and columns").split())
    matrix = []
    
    for i in range(rows):
        matrix.append(list(map(int, input("Enter the row values").split())))
    
    for i in matrix:
        print(*i, sep="", end=" ")
    

    【讨论】:

    • 这既不是稀疏矩阵也不是作为稀疏矩阵处理的?
    猜你喜欢
    • 1970-01-01
    • 2012-09-04
    • 2017-12-16
    • 1970-01-01
    • 2015-04-26
    • 2023-04-10
    • 1970-01-01
    • 2018-01-19
    • 2011-11-20
    相关资源
    最近更新 更多