【发布时间】:2020-11-15 13:17:56
【问题描述】:
输入:
original_matrix =
[
[1, 0, 1, 1, 0, 0, 1, 0],
[0, 0, 1, 0, 1, 0, 0, 1],
[0, 1, 0, 0, 1, 0, 0, 0],
[1, 0, 0, 1, 1, 0, 0, 0]
]
transformation =
[
[0, 2],
[1, 4],
[3, 6, 7]
]
输出:
transformed_matrix =
[
[2, 0, 2],
[1, 1, 1],
[0, 2, 0],
[1, 1, 1]
]
让我解释一下转换的作用。
-
transformed_matrix.shape[0] = original_matrix.shape[0],表示转换后的行数将始终保持不变。 -
transformed_matrix.shape[1] = len(transformation),表示transformed_matrix的列数与transformation中的行数相同。 -
transformed_matrix中的j列是original_matrix中某些列的水平总和,列索引在transformation[j]中提供。
我怎样才能快速完成这种精确的转换?比如利用矩阵乘法?我对 numpy 还是很陌生,而且我几乎已经将线性代数课上的所有知识都传授给了我的大学教授......
【问题讨论】:
-
transformed_matrix有 3 列,transformation有 3 行。我确实犯了一个错误,因为transformation不是矩阵。所以我不应该说transformation的形状。
标签: python numpy matrix matrix-multiplication