假设我有一个矩阵
x=array([[ 0., 0., 0.],
[ 0., 0., 1.],
[ 0., 1., 0.],
[ 0., 1., 1.],
[ 1., 0., 0.],
[ 1., 0., 1.],
[ 1., 1., 0.],
[ 1., 1., 1.]])
我想要
array([[ 0., 0., 0.],
[ 0., 0., 2.],
[ 0., 3., 0.],
[ 0., 4., 4.],
[ 5., 0., 0.],
[ 6., 0., 6.],
[ 7., 7., 0.],
[ 8., 8., 8.]])
如何在x
和range(1,9)
之间编写单行表达式?列的相同操作的代码是什么?
答案 0 :(得分:4)
x * np.arange(1, 9).reshape(-1, 1)
或
x * arange(1, 9)[:, np.newaxis]
两种形式都在arange(1, 9)
之外创建一个列向量,它沿着x
的y轴很好地广播。
“列的相同操作”只是上述的转置,即跳过reshape
操作:
x * arange(1, 4)