I still think we should fix this so that it just works out of the box.
 Squashing everything into one array is more complicated than it needs
to be.

Aaron Meurer

On Sun, Jan 12, 2014 at 4:08 PM, Jason Moore <moorepa...@gmail.com> wrote:
> 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.

-- 
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