numpy.hstack and numpy.vstack are typically used for concatenation of numpy
arrays. I typically use it and the * for passing lots of args into lambdify.


Jason
moorepants.info
+01 530-601-9791


On Sun, Jan 12, 2014 at 5:04 PM, Aaron Meurer <asmeu...@gmail.com> wrote:

> Your code still doesn't work for me in Python 2 either.
>
> But the point has been received. This sort of thing (nested arguments)
> should probably work.
>
> You need to understand what the * does. It denestst the list into
> arguments, so that
>
> f(*[1, 2, 3])
>
> is the same as
>
> f(1, 2, 3)
>
> You are basically calling the function as
>
> f([1, 1], [0.5, 1])
>
> in the version with the *, and as
>
> f([[1, 1], [0.5, 1]])
>
> in the version without. But it expects
>
> f(1, 1, 0.5, 1)
>
> I'm not sure what the best way to concatenate two numpy arrays is, but
> the following does work:
>
> fx(*(list(X) + list(a)))
>
> (because + on lists concatenates).
>
> Aaron Meurer
>
> On Sun, Jan 12, 2014 at 3:11 PM, Janwillem van Dijk
> <jwe.van.d...@gmail.com> wrote:
> > Thanks for the comments.
> > You are right, that works. So that example was my lengthy scripts too far
> > simplified. In my actual program the functions have two arrays as input
> > (expectation and standard uncertainty in a measurement model) and than
> the *
> > does not work anymore. I understood from the docs that the
> modules='numpy'
> > option was meant to make this work and that is what I experienced a year
> or
> > so ago working with 2.7. So here is a modified example that still works
> in
> > 2.7 but not with me on 3.3:
> >
> > import sympy
> >
> > import numpy
> >
> > n = 2
> >
> > x = sympy.symbols('x_0:%d' % n, real=True, bounded=True)
> >
> > formula = 'x_0 + x_1'
> >
> > y = sympy.sympify(formula)
> >
> > fx = f_x = sympy.lambdify(x, y, modules='numpy')
> >
> > X = numpy.ones(n)
> >
> > print('function value=', fx(*X))  # works on both pythons
> >
> >
> > a = sympy.symbols('a_0:%d' % n, real=True, bounded=True)
> >
> > formula = 'a_0 * x_0 + a_1 * x_1'
> >
> > y = sympy.sympify(formula)
> >
> > fx = f_x = sympy.lambdify([x, a], y, modules='numpy')
> >
> > a = numpy.linspace(0.5, 1.0, n)
> >
> > print('function value=', fx(*[X, a]))  # does not work on 3.3
> >
> >
> > gives with 3.3
> >
> > print('function value=', fx(*[X, a]))
> >
> > TypeError: <lambda>() missing 2 required positional arguments: 'a_0' and
> > 'a_1'
> >
> >
> > and the same for a variation without *
> >
> > print('function value=', fx(X, a))
> > TypeError: <lambda>() missing 2 required positional arguments: 'a_0' and
> > 'a_1'
> >
> > So still all help and explanations welcome!
> > Cheers, Janwillem
> >
> >
> > On Tuesday, 7 January 2014 11:04:30 UTC+1, Janwillem van Dijk wrote:
> >>
> >> I have a SymPy script with a.o.
> >>
> >> f_mean = lambdify([mu, sigma], mean, modules='numpy')
> >>
> >>
> >> where mean is a function of mu and sigma and mu and sigma are both
> arrays
> >>
> >> mu = symbols('mu_0:%d' % n, real=True, bounded=True)
> >>
> >> sigma = symbols('sigma_0:%d' % n, positive=True, real=True,
> bounded=True)
> >>
> >>
> >> Under Python 2.7.5+ SymPy 0.12.0 I can use:
> >>
> >> y = f_mean(x_n, ux_n)
> >>
> >> returning y as a numpy array of size n when x_n and ux_n are both numpy
> >> arrays of size n.
> >>
> >> However, with Python 3.3.2+ and SymPy 0.7.4.1-git I get (for n=5):
> >>
> >> y = f_mean(x_n, ux_n)
> >> TypeError: <lambda>() missing 10 required positional arguments: 'mu_2',
> >> 'mu_3', 'mu_4', 'mu_5', 'sigma_0', 'sigma_1', 'sigma_2', 'sigma_3',
> >> 'sigma_4', and 'sigma_5'
> >>
> >>
> >> Which is similar to what I got in Python 2.7 before I added the
> >> modules=numpy argument
> >>
> >> All this on ubuntu 13.10
> >>
> >>
> >> Have I missed something in the docs or did I stumble on a not yet
> >> implemented feature?
> >>
> >> Any help very welcome.heers,
> >>
> >> Cheers, Janwillem
> >>
> >>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "sympy" group.
> > To unsubscribe from this group and stop receiving emails from it, send an
> > email to sympy+unsubscr...@googlegroups.com.
> > To post to this group, send email to sympy@googlegroups.com.
> > Visit this group at http://groups.google.com/group/sympy.
> > For more options, visit https://groups.google.com/groups/opt_out.
>
> --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sympy+unsubscr...@googlegroups.com.
> To post to this group, send email to sympy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sympy.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sympy+unsubscr...@googlegroups.com.
To post to this group, send email to sympy@googlegroups.com.
Visit this group at http://groups.google.com/group/sympy.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to