2

假设我有一个矩阵

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)?列的相同操作的代码是什么?

4

1 回答 1

4
x * np.arange(1, 9).reshape(-1, 1)

或者

x * arange(1, 9)[:, np.newaxis]

两种形式都从 中生成一个列向量arange(1, 9),该列向量沿 的 y 轴很好地传播x

“列的相同操作”只是上面的转置,即跳过reshape操作:

x * arange(1, 4)
于 2013-10-04T12:42:03.063 回答