![](/img/trans.png)
[英]How should I subtract two vectors or matrices from each other without NumPy?
[英]How to subtract from columns and not rows in NumPy matrices?
我有一個矩陣X
:
[[ 2. nan nan nan]
[ 3. 2. nan nan]
[ nan 5. 5. nan]
[ nan nan nan nan]]
和清單b
:
[-1.0, 2.0, 0.5, -2.0]
當我做X - b
我得到:
[[ 3. nan nan nan]
[ 4. 0. nan nan]
[ nan 3. 4.5 nan]
[ nan nan nan nan]]
如果我想跨列而不是行減去b
怎么辦。
我正在尋找類似X - b.transpose()
東西:
[[ 3. nan nan nan]
[ 1. 0. nan nan]
[ nan 4.5 4.5 nan]
[ nan nan nan nan]]
使用numpy.vstack函數的解決方案(垂直堆疊數組):
a = np.array([[ 2.0, np.NaN, np.NaN, np.NaN],
[ 3.0, 2.0, np.NaN, np.NaN],
[ np.NaN, 5.0, 5.0, np.NaN],
[ np.NaN, np.NaN, np.NaN, np.NaN]])
b = np.array([-1.0, 2.0, 0.5, -2.0])
print(a - np.vstack(b))
輸出:
[[ 3. nan nan nan]
[ 1. 0. nan nan]
[ nan 4.5 4.5 nan]
[ nan nan nan nan]]
這是一個值得指出的陷阱:
>>> a = np.identity(4)
>>> a
array([[ 1., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.]])
>>> b = [1,2,3,4]
>>> a-b
array([[ 0., -2., -3., -4.],
[-1., -1., -3., -4.],
[-1., -2., -2., -4.],
[-1., -2., -3., -3.]])
>>> a-np.matrix(b)
matrix([[ 0., -2., -3., -4.],
[-1., -1., -3., -4.],
[-1., -2., -2., -4.],
[-1., -2., -3., -3.]])
>>> a-np.array(b)
array([[ 0., -2., -3., -4.],
[-1., -1., -3., -4.],
[-1., -2., -2., -4.],
[-1., -2., -3., -3.]])
>>> a-np.matrix(b).T # T is short for transpose()
matrix([[ 0., -1., -1., -1.],
[-2., -1., -2., -2.],
[-3., -3., -2., -3.],
[-4., -4., -4., -3.]])
>>> # BUT:
... a-np.array(b).T
array([[ 0., -2., -3., -4.],
[-1., -1., -3., -4.],
[-1., -2., -2., -4.],
[-1., -2., -3., -3.]])
>>> # with 1d arrays .T does nothing! Use instead
... a-np.array(b)[:, None]
array([[ 0., -1., -1., -1.],
[-2., -1., -2., -2.],
[-3., -3., -2., -3.],
[-4., -4., -4., -3.]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.