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
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
_______________________________________________ NumPyDiscussion mailing list NumPyDiscussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpydiscussion
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
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
_______________________________________________ NumPyDiscussion mailing list NumPyDiscussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpydiscussion
_______________________________________________ NumPyDiscussion mailing list NumPyDiscussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpydiscussion
On Thu, Oct 6, 2011 at 7:29 AM, Samuel John
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 onedimensional. 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
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
_______________________________________________ NumPyDiscussion mailing list NumPyDiscussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpydiscussion
_______________________________________________ NumPyDiscussion mailing list NumPyDiscussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpydiscussion
_______________________________________________ NumPyDiscussion mailing list NumPyDiscussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpydiscussion
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 columnvector 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