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
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 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
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 scipy@samueljohn.de wrote:
I just learned two things:
 np.newaxis
 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 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
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