用python完成1.输入一个稀疏矩阵。 2、有效性判断。 3、稀疏数字占比是否低于稀疏比率判断。 4、打印稀疏矩阵和压缩后的结果
时间: 2024-03-24 19:41:45 浏览: 47
以下是用Python实现输入、有效性判断、稀疏比率判断、打印稀疏矩阵和压缩后结果的代码:
```python
import numpy as np
def input_sparse_matrix():
row, col = map(int, input("请输入稀疏矩阵的行列数,用空格分隔:").split())
matrix = np.zeros((row, col))
for i in range(row):
row_data = input("请输入第{}行的数据,用空格分隔:".format(i+1)).split()
for j in range(len(row_data)):
matrix[i][j] = int(row_data[j])
return matrix
def is_valid(matrix):
for i in matrix:
if len(i) != len(matrix[0]):
return False
return True
def calc_sparse_ratio(matrix):
total = matrix.shape[0] * matrix.shape[1]
sparse = np.count_nonzero(matrix)
return sparse / total
def compress_matrix(matrix):
compressed = []
row = []
col = []
for i in range(matrix.shape[0]):
for j in range(matrix.shape[1]):
if matrix[i][j] != 0:
compressed.append(matrix[i][j])
row.append(i)
col.append(j)
return compressed, row, col
def print_sparse_matrix(matrix):
print("稀疏矩阵:")
for i in matrix:
print(i)
def print_compressed_matrix(compressed, row, col):
print("压缩结果:")
print("Compressed:", compressed)
print("Row:", row)
print("Col:", col)
if __name__ == "__main__":
matrix = input_sparse_matrix()
if not is_valid(matrix):
print("输入的矩阵不合法!")
else:
sparse_ratio = calc_sparse_ratio(matrix)
print("稀疏比率为:", sparse_ratio)
if sparse_ratio < 0.5:
print("稀疏比率低于阈值,进行压缩:")
compressed, row, col = compress_matrix(matrix)
print_sparse_matrix(matrix)
print_compressed_matrix(compressed, row, col)
else:
print("稀疏比率高于阈值,不进行压缩。")
```
这段代码首先通过`input_sparse_matrix()`函数获取用户输入的稀疏矩阵,然后通过`is_valid()`函数判断矩阵是否合法。接着,通过`calc_sparse_ratio()`函数计算稀疏比率,如果低于0.5,则进行压缩;否则不进行压缩。压缩的结果通过`compress_matrix()`函数得到,最后通过`print_sparse_matrix()`和`print_compressed_matrix()`函数打印出稀疏矩阵和压缩结果。
阅读全文