#python #python-3.x #matrix #sparse-matrix
Вопрос:
Слышал, я принимаю пользовательский ввод для матрицы
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
Комментарии:
1. Вы только что показали, как вы получаете элементы матрицы от пользователя, пожалуйста, покажите, что вы сделали, чтобы создать разреженную матрицу.
2. Весь смысл разреженной матрицы заключается в том, что вы не перебираете (или храните, или иным образом обрабатываете) все элементы, только ненулевые
Ответ №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]]
Комментарии:
1. Это не разреженная матрица и не обрабатывается как разреженная матрица?
2. Я пытался сопоставить выходные данные, требуемые OP. Я понимаю, что это не разреженная матрица, но моя попытка заключалась только в том, чтобы получить ожидаемый результат.
Ответ №2:
Чтобы использовать разреженную матрицу в python, просто установите библиотеку scipy. Ниже приведен пример того, как использовать его с 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=" ")
Комментарии:
1. Это не разреженная матрица и не обрабатывается как разреженная матрица?