我试图找到一种方法来找到数组X的子矩阵,用户可以在其中提供输入i和j,如下所示:
def submatrix(X, i, j):
预期输出应为不包含第i行和第j列的矩阵X。
示例:
X = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
submatrix(X,1,1)
[[1, 3],
[7, 9]]
我试图独自解决它,但显然没有设法做到,也不知道从哪里开始。因此寻求帮助。
答案 0 :(得分:1)
for loop
:X = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
def submatrix(X, i, j):
X=X[:]
del(X[i]) # delete the row
for n in range(len(X)):
del(X[n][j]) # delete the column elements of the rows
return X
X_new = submatrix(X, 1, 1)
[[1, 3], [7, 9]]
答案 1 :(得分:0)
这怎么样?
def submatrix(X, i, j):
return [[elem for x, elem in enumerate(row) if x != i]
for y, row in enumerate(X) if y != j]
X = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
print(submatrix(X, 1, 1))
答案 2 :(得分:0)
def submatrix(x, i, j):
matrix = []
for row in x[:i] + x[i+1:]:
matrix.append(row[:j] + row[j+1:])
return matrix
示例
>>> submatrix([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]], 1, 1)
[[1, 3],
[7, 9]]
>>> submatrix([[1, 2, 3, 4],
[5, 6, 7, 8],
[2, 4, 5, 9],
[9, 6, 4, 3]], 2, 1)
[[1, 3, 4],
[5, 7, 8],
[9, 4, 3]]
答案 3 :(得分:0)
这是解决方案。 首先,您应该删除该行,然后遍历所有行以删除嵌套列表的列索引。像这样
def submatrix(X, i, j):
del X[i]
for k in range(len(X)):
del X[k][j]
答案 4 :(得分:0)
这也可以工作:
def submatrix(X, i, j):
X = X[:i] + X[i+1:] if i!= len(X) else X[:-1]
X = [i[:j] + i[j+1:] if j!= len(X[0]) else i[:-1] for i in X]
return X