Given a vector y, I want a matrix H whose rows are y - x0 y - x1 y - x2 ... where x_i are scalars Suggestion?
On Thu, Oct 6, 2011 at 7:08 AM, Neal Becker <ndbecker2@gmail.com> wrote:
Given a vector y, I want a matrix H whose rows are
y - x0 y - x1 y - x2 ...
where x_i are scalars
Suggestion?
In [15]: import numpy as np In [16]: y = np.array([10.0, 20.0, 30.0]) In [17]: x = np.array([0, 1, 2, 4]) In [18]: H = y - x[:, np.newaxis] In [19]: H Out[19]: array([[ 10., 20., 30.], [ 9., 19., 29.], [ 8., 18., 28.], [ 6., 16., 26.]]) Warren
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
I just learned two things: 1. np.newaxis 2. Array dimension broadcasting rocks more than you think. The x[:, np.newaxis] might not be the most intuitive solution but it's great and powerful. Intuitive would be to have x.T to transform [0,1,2,4] into [[0],[1],[2],[4]]. Thanks Warren :-) Samuel On 06.10.2011, at 14:18, Warren Weckesser wrote:
On Thu, Oct 6, 2011 at 7:08 AM, Neal Becker <ndbecker2@gmail.com> wrote: Given a vector y, I want a matrix H whose rows are
y - x0 y - x1 y - x2 ...
where x_i are scalars
Suggestion?
In [15]: import numpy as np
In [16]: y = np.array([10.0, 20.0, 30.0])
In [17]: x = np.array([0, 1, 2, 4])
In [18]: H = y - x[:, np.newaxis]
In [19]: H Out[19]: array([[ 10., 20., 30.], [ 9., 19., 29.], [ 8., 18., 28.], [ 6., 16., 26.]])
Warren
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
On Thu, Oct 6, 2011 at 7:29 AM, Samuel John <scipy@samueljohn.de> wrote:
I just learned two things:
1. np.newaxis 2. Array dimension broadcasting rocks more than you think.
Yup. :)
The x[:, np.newaxis] might not be the most intuitive solution but it's great and powerful. Intuitive would be to have x.T to transform [0,1,2,4] into [[0],[1],[2],[4]].
I agree, creating a new dimension by indexing with np.newaxis isn't the first thing I would guess if I didn't already know about it. An alternative is x.reshape(4,1) (or even better, x.reshape(-1,1) so it doesn't explicitly refer to the length of x). (Also, you probably noticed that transposing won't work, because x is one-dimensional. The transpose operation simply swaps dimensions, and with just one dimension there is nothing to swap; x.T is the same as x.) Warren
Thanks Warren :-) Samuel
On 06.10.2011, at 14:18, Warren Weckesser wrote:
On Thu, Oct 6, 2011 at 7:08 AM, Neal Becker <ndbecker2@gmail.com> wrote: Given a vector y, I want a matrix H whose rows are
y - x0 y - x1 y - x2 ...
where x_i are scalars
Suggestion?
In [15]: import numpy as np
In [16]: y = np.array([10.0, 20.0, 30.0])
In [17]: x = np.array([0, 1, 2, 4])
In [18]: H = y - x[:, np.newaxis]
In [19]: H Out[19]: array([[ 10., 20., 30.], [ 9., 19., 29.], [ 8., 18., 28.], [ 6., 16., 26.]])
Warren
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
import numpy # Say y is y = numpy.array([1,2,3]) Y = numpy.vstack([y,y,y,y]) # Y is array([[1, 2, 3], # [1, 2, 3], # [1, 2, 3], # [1, 2, 3]]) x = numpy.array([[0],[2],[4],[6]]) # a column-vector of your scalars x0, x1... Y - x Hope this is what you meant. cheers, Samuel On 06.10.2011, at 14:08, Neal Becker wrote:
Given a vector y, I want a matrix H whose rows are
y - x0 y - x1 y - x2 ...
where x_i are scalars
participants (3)
-
Neal Becker
-
Samuel John
-
Warren Weckesser