Python and numpy : subtracting line by line a 2-dim array from a 1-dim array
arrays, math, numpy, python
Solution
The problem is that `y-x` have the respective shapes `(2) (2,5)`. To do proper broadcasting, you'll need shapes `(2,1) (2,5)`. We can do this with `.reshape` as long as the number of elements are preserved:
y.reshape(2,1) - x
Gives:
array([[19, 18, 17, 16, 15],
[ 4, 3, 2, 1, 0]])
Problem
In python, I wish to subtract line by line a 2-dim array from a 1-dim array. I know how to do it with a 'for' loop and indexes but I suppose it may be quicker to use numpy functions. However I did not find a way to do it. Here is an example with a 'for' loop : ``` from numpy import * x=array([[1,2,3,4,5],[6,7,8,9,10]]) y=array([20,10]) j=array([0, 1]) a=zeros([2,5]) for i in j : ... a[i]=y[i]-x[i] ``` And here is an example of something that does not work, replacing the 'for' loop by this: ``` a=y[j]-x[j,i] Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: shape mismatch: objects cannot be broadcast to a single shape ``` Dou you have suggestions ?