减去矩阵中的每一行所以我有一个n x d
矩阵和n x 1
载体。我正在尝试编写一个代码,用矢量减去矩阵中的每一行。NumPy的通过矢量
我现在有一个for
循环迭代访问通过和由向量中减去在基质中i
-th行。 有没有简单的方法来减去矢量的整个矩阵?
谢谢!
当前代码:
for i in xrange(len(X1)):
X[i,:] = X1[i,:] - X2
这是X1
是矩阵的i
行和第X2
是矢量。我可以做到这一点,我不需要for
循环?
减去矩阵中的每一行所以我有一个n x d
矩阵和n x 1
载体。我正在尝试编写一个代码,用矢量减去矩阵中的每一行。NumPy的通过矢量
我现在有一个for
循环迭代访问通过和由向量中减去在基质中i
-th行。 有没有简单的方法来减去矢量的整个矩阵?
谢谢!
当前代码:
for i in xrange(len(X1)):
X[i,:] = X1[i,:] - X2
这是X1
是矩阵的i
行和第X2
是矢量。我可以做到这一点,我不需要for
循环?
只适用于numpy
,但只有尾轴具有相同的尺寸。下面是成功地从矩阵减去一个向量的示例:
In [27]: print m; m.shape
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
Out[27]: (4, 3)
In [28]: print v; v.shape
[0 1 2]
Out[28]: (3,)
In [29]: m - v
Out[29]:
array([[0, 0, 0],
[3, 3, 3],
[6, 6, 6],
[9, 9, 9]])
这个工作,因为两者的尾轴具有相同的尺寸(3)。
在你的情况下,引导轴具有相同的尺寸。下面是一个例子,使用相同的v
如上,如何可固定:
In [35]: print m; m.shape
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
Out[35]: (3, 4)
In [36]: (m.transpose() - v).transpose()
Out[36]:
array([[0, 1, 2, 3],
[3, 4, 5, 6],
[6, 7, 8, 9]])
用于广播轴的规则在深度here进行说明。
除了@ John1024回答,“换位”,在numpy的一维向量可以做这样的:
In [1]: v = np.arange(3)
In [2]: v
Out[2]: array([0, 1, 2])
In [3]: v = v[:, np.newaxis]
In [4]: v
Out[4]:
array([[0],
[1],
[2]])
从这里,从m
每列减去v
是微不足道的使用广播:
In [5]: print(m)
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
In [6]: m - v
Out[6]:
array([[0, 1, 2, 3],
[3, 4, 5, 6],
[6, 7, 8, 9]])
如何在第二种情况下'mv.transpose()'? –