如果我有一个矩阵作为一个简单的数组数组(不是一个 numpy 矩阵),我怎么能在一行代码中缩放矩阵的一列?
这只是出于好奇——我并不是说一条线超过两三条线有什么好处。
对于某些矩阵“mtx”、列索引“index”和标量“scale”,这就是我所拥有的。我们可以让它更漂亮或更易读吗?此外,如果多列具有相同的值,这可能会失败。
mtx = zip( * ( (map(lambda r : r*scale if zip(*mtx).index(col)==index else r, col)) for col in zip(*mtx)] ) )
编辑:
这是输入/输出的示例,根据要求
mtx = [ [ i for i in range(3) ] for j in range(3) ]
index = 1
scale = 17
print mtx
mtx = zip( * ( p (map(lambda r : r*scale if zip(*mtx).index(col)==index else r, col)) for col in zip(*mtx)] ) )
print mtx
打印语句将分别产生:
--> [ [0,1,2],[0,1,2],[0,1,2] ]
--> [ [0,17,2],[0,17,2],[0,17,2] ]