Vectors

Discussion in 'Python' started by Algis Kabaila, Apr 20, 2011.

  1. Hi,

    Are there any modules for vector algebra (three dimensional
    vectors, vector addition, subtraction, multiplication [scalar
    and vector]. Could you give me a reference to such module?

    platform - ubuntu 10.10 (Linux), Python 3.1 or higher.

    Thanks for your help to avoid re-invention of the wheel.

    OldAl.

    --
    Algis
    http://akabaila.pcug.org.au/StructuralAnalysis.pdf
     
    Algis Kabaila, Apr 20, 2011
    #1
    1. Advertising

  2. Algis Kabaila

    Anssi Saari Guest

    Algis Kabaila <> writes:

    > Are there any modules for vector algebra (three dimensional
    > vectors, vector addition, subtraction, multiplication [scalar
    > and vector]. Could you give me a reference to such module?


    NumPy has array (and matrix) types with support for these basic
    operations you mention. See the tutorial at http://numpy.scipy.org/
     
    Anssi Saari, Apr 20, 2011
    #2
    1. Advertising

  3. Algis Kabaila

    Andreas Tawn Guest

    > Algis Kabaila <> writes:
    >
    > > Are there any modules for vector algebra (three dimensional
    > > vectors, vector addition, subtraction, multiplication [scalar
    > > and vector]. Could you give me a reference to such module?

    >
    > NumPy has array (and matrix) types with support for these basic
    > operations you mention. See the tutorial at http://numpy.scipy.org/


    You might also want to consider http://code.google.com/p/pyeuclid/

    Cheers,

    Drea
     
    Andreas Tawn, Apr 20, 2011
    #3
  4. Algis Kabaila

    RJB Guest

    On Apr 20, 6:43 am, Andreas Tawn <> wrote:
    > > Algis Kabaila <> writes:

    >
    > > > Are there any modules for vector algebra (three dimensional
    > > > vectors, vector addition, subtraction, multiplication [scalar
    > > > and vector]. Could you give me a reference to such module?

    >
    > > NumPy has array (and matrix) types with support for these basic
    > > operations you mention. See the tutorial athttp://numpy.scipy.org/

    >
    > You might also want to considerhttp://code.google.com/p/pyeuclid/
    >
    > Cheers,
    >
    > Drea


    Pyeuclid docs don't mention dot or cross products.
    RJB
     
    RJB, Apr 20, 2011
    #4
  5. Algis Kabaila

    Andreas Tawn Guest

    > On Apr 20, 6:43 am, Andreas Tawn <> wrote:
    > > > Algis Kabaila <> writes:

    > >
    > > > > Are there any modules for vector algebra (three dimensional
    > > > > vectors, vector addition, subtraction, multiplication [scalar
    > > > > and vector]. Could you give me a reference to such module?

    > >
    > > > NumPy has array (and matrix) types with support for these basic
    > > > operations you mention. See the tutorial athttp://numpy.scipy.org/

    > >
    > > You might also want to considerhttp://code.google.com/p/pyeuclid/
    > >
    > > Cheers,
    > >
    > > Drea

    >
    > Pyeuclid docs don't mention dot or cross products.
    > RJB


    http://partiallydisassembled.net/euclid/vector-classes.html#SECTION002220000000000000000

    Bottom of the page.

    Cheers,

    Drea
     
    Andreas Tawn, Apr 20, 2011
    #5
  6. On Thursday 21 April 2011 01:49:57 Andreas Tawn wrote:
    > > On Apr 20, 6:43 am, Andreas Tawn <>

    wrote:
    > > > > Algis Kabaila <> writes:
    > > > > > Are there any modules for vector algebra (three
    > > > > > dimensional vectors, vector addition, subtraction,
    > > > > > multiplication [scalar and vector]. Could you give
    > > > > > me a reference to such module?
    > > > >
    > > > > NumPy has array (and matrix) types with support for
    > > > > these basic operations you mention. See the tutorial
    > > > > athttp://numpy.scipy.org/
    > > >
    > > > You might also want to
    > > > considerhttp://code.google.com/p/pyeuclid/
    > > >
    > > > Cheers,
    > > >
    > > > Drea

    > >
    > > Pyeuclid docs don't mention dot or cross products.
    > > RJB

    >
    > http://partiallydisassembled.net/euclid/vector-classes.html#S
    > ECTION002220000000000000000
    >
    > Bottom of the page.
    >
    > Cheers,
    >
    > Drea


    Yes, pyeuclid had "cross" and "dot" product of vectors. I am
    impressed with it and curious how it works: the Vector3 class
    is available without any prefix euclid:

    import euclid
    v = Vector3(111.., 222.2, 333.3)

    works without requiring as in:
    v = euclid.Vector3( etc...)

    I am really intrigued by that. OTOH, I also am somewhat
    aprehensive about using something that affects the program
    writing after importing "euclid", without any need to explicitly
    refer to euclid. Looks rather risky to me. What does that do
    to the namespace?

    Thanks for bringing this to my attention. I confess that I
    would be hapier if euclid was accessible in a "standard" manner
    with prefix of module name for classes in the module.

    OldAl.

    --
    Algis
    http://akabaila.pcug.org.au/StructuralAnalysis.pdf
     
    Algis Kabaila, Apr 21, 2011
    #6
  7. Algis Kabaila

    Anssi Saari Guest

    Andreas Tawn <> writes:

    > You might also want to consider http://code.google.com/p/pyeuclid/


    Thanks, I was studying quaternions recently and had to use two
    packages to get some stuff done. And of course one of them used
    ass-backwards declaration for a quaternion and one didn't...
     
    Anssi Saari, Apr 21, 2011
    #7
  8. Algis Kabaila wrote:
    > the Vector3 class
    > is available without any prefix euclid:
    >
    > import euclid
    > v = Vector3(111.., 222.2, 333.3)


    Doesn't work that way for me:

    Python 2.7 (r27:82500, Oct 15 2010, 21:14:33)
    [GCC 4.2.1 (Apple Inc. build 5664)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import euclid
    >>> Vector3

    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    NameError: name 'Vector3' is not defined

    Are you sure you hadn't previously done 'from euclid import
    Vector3' or 'from euclid import *' in that session?

    --
    Greg
     
    Gregory Ewing, Apr 22, 2011
    #8
  9. On Friday 22 April 2011 11:43:26 Gregory Ewing wrote:
    > Algis Kabaila wrote:
    > > the Vector3 class
    > > is available without any prefix euclid:
    > >
    > > import euclid
    > > v = Vector3(111.., 222.2, 333.3)

    >
    > Doesn't work that way for me:
    >
    > Python 2.7 (r27:82500, Oct 15 2010, 21:14:33)
    > [GCC 4.2.1 (Apple Inc. build 5664)] on darwin
    > Type "help", "copyright", "credits" or "license" for more
    > information.
    >
    > >>> import euclid
    > >>> Vector3

    >
    > Traceback (most recent call last):
    > File "<stdin>", line 1, in <module>
    > NameError: name 'Vector3' is not defined
    >
    > Are you sure you hadn't previously done 'from euclid import
    > Vector3' or 'from euclid import *' in that session?


    I've tested it again and it does behave in a "standard" manner.
    I must have imported all as you suspected. Makes me much
    happier, though I do feel sheepish. As they say, sh... happens.

    BTW, I did modify the euclid very slightly to work with Python 3
    - just change the syntax of messages with exception in line with
    syntax changes.

    Thanks for sharing your experience with that cute package!

    OldAl.
    --
    Algis
    http://akabaila.pcug.org.au/StructuralAnalysis.pdf
     
    Algis Kabaila, Apr 22, 2011
    #9
  10. Algis Kabaila

    sturlamolden Guest

    On Apr 20, 9:47 am, Algis Kabaila <> wrote:

    > Are there any modules for vector algebra (three dimensional
    > vectors, vector addition, subtraction, multiplication [scalar
    > and vector]. Could you give me a reference to such module?


    NumPy

    Or one of these libraries (ctypes or Cython):

    BLAS (Intel MKL, ACML, ACML-GPU, GotoBLAS2, or ATLAS)
    Intel VML
    ACML-VM
     
    sturlamolden, Apr 22, 2011
    #10
  11. On Saturday 23 April 2011 06:57:23 sturlamolden wrote:
    > On Apr 20, 9:47 am, Algis Kabaila <>

    wrote:
    > > Are there any modules for vector algebra (three dimensional
    > > vectors, vector addition, subtraction, multiplication
    > > [scalar and vector]. Could you give me a reference to such
    > > module?

    >
    > NumPy
    >
    > Or one of these libraries (ctypes or Cython):
    >
    > BLAS (Intel MKL, ACML, ACML-GPU, GotoBLAS2, or ATLAS)
    > Intel VML
    > ACML-VM


    Thanks for that. Last time I looked at numpy (for Python3) it
    was available in source only. I know, real men do compile, but
    I am an old man... I will compile if it is unavoidable, but in
    case of numpy it does not seem a simple matter. Am I badly
    mistaken?

    euclid has another attraction - the source is readily available,
    not too burdened by backward compatibility issues and relatively
    easy to follow, though I "managed" to get lost in it :)

    OldAl.
    --
    Algis
    http://akabaila.pcug.org.au/StructuralAnalysis.pdf
     
    Algis Kabaila, Apr 23, 2011
    #11
  12. Algis Kabaila

    sturlamolden Guest

    On Apr 23, 2:32 am, Algis Kabaila <> wrote:

    > Thanks for that.  Last time I looked at numpy (for Python3) it
    > was available in source only.  I know, real men do compile, but
    > I am an old man...  I will compile if it is unavoidable, but in
    > case of numpy it does not seem  a simple matter. Am I badly
    > mistaken?



    There is a Win32 binary for Python 3.1:

    http://sourceforge.net/projects/numpy/files/NumPy/1.5.1/

    I have not tried to compile NumPy as I use Enthought to
    avoid such headaches. I value my own time enough to pay
    for a subscription ;-)

    http://enthought.com/



    Sturla
     
    sturlamolden, Apr 23, 2011
    #12
  13. On Saturday 23 April 2011 14:13:31 sturlamolden wrote:
    > On Apr 23, 2:32 am, Algis Kabaila <>

    wrote:
    > > Thanks for that. Last time I looked at numpy (for Python3)
    > > it was available in source only. I know, real men do
    > > compile, but I am an old man... I will compile if it is
    > > unavoidable, but in case of numpy it does not seem a
    > > simple matter. Am I badly mistaken?

    >
    > There is a Win32 binary for Python 3.1:
    >
    > http://sourceforge.net/projects/numpy/files/NumPy/1.5.1/
    >
    > I have not tried to compile NumPy as I use Enthought to
    > avoid such headaches. I value my own time enough to pay
    > for a subscription ;-)
    >
    > http://enthought.com/
    >
    >
    >
    > Sturla


    Whilst I have Win32 officially paid for OS, never "fire it up".
    I find nix systems much more interesting and convenient for
    programming and consequently I use ubuntu for computing
    activities. I do understand that many people prefer Win32 and
    appreciate their right to use what they want. I just am at a
    loss to understand *why* ...

    I guess each to own taste,

    OldAl.
    --
    Algis
    http://akabaila.pcug.org.au/StructuralAnalysis.pdf
     
    Algis Kabaila, Apr 23, 2011
    #13
  14. Algis Kabaila

    sturlamolden Guest

    On Apr 23, 2:26 pm, Algis Kabaila <> wrote:

    > I do understand that many people prefer Win32 and
    > appreciate their right to use what they want.  I just am at a
    > loss to understand *why* ...


    For the same reason some people prefered OS/2 or
    DEC to SunOS or BSD.

    For the same reason some people prefer Perl or Java
    to Python.

    Sturla
     
    sturlamolden, Apr 23, 2011
    #14
  15. Algis Kabaila

    Robert Kern Guest

    On 4/22/11 7:32 PM, Algis Kabaila wrote:
    > On Saturday 23 April 2011 06:57:23 sturlamolden wrote:
    >> On Apr 20, 9:47 am, Algis Kabaila<>

    > wrote:
    >>> Are there any modules for vector algebra (three dimensional
    >>> vectors, vector addition, subtraction, multiplication
    >>> [scalar and vector]. Could you give me a reference to such
    >>> module?

    >>
    >> NumPy
    >>
    >> Or one of these libraries (ctypes or Cython):
    >>
    >> BLAS (Intel MKL, ACML, ACML-GPU, GotoBLAS2, or ATLAS)
    >> Intel VML
    >> ACML-VM

    >
    > Thanks for that. Last time I looked at numpy (for Python3) it
    > was available in source only. I know, real men do compile, but
    > I am an old man... I will compile if it is unavoidable, but in
    > case of numpy it does not seem a simple matter. Am I badly
    > mistaken?


    On UNIX machines with compilers and headers properly installed, it's really
    pretty straightforward.

    --
    Robert Kern

    "I have come to believe that the whole world is an enigma, a harmless enigma
    that is made terrible by our own mad attempt to interpret it as though it had
    an underlying truth."
    -- Umberto Eco
     
    Robert Kern, Apr 25, 2011
    #15
  16. Algis Kabaila

    rusi Guest

    On Apr 25, 4:49 am, Robert Kern <> wrote:
    > On 4/22/11 7:32 PM, Algis Kabaila wrote:
    >
    >
    >
    > > On Saturday 23 April 2011 06:57:23 sturlamolden wrote:
    > >> On Apr 20, 9:47 am, Algis Kabaila<>

    > > wrote:
    > >>> Are there any modules for vector algebra (three dimensional
    > >>> vectors, vector addition, subtraction, multiplication
    > >>> [scalar and vector]. Could you give me a reference to such
    > >>> module?

    >
    > >> NumPy

    >
    > >> Or one of these libraries (ctypes or Cython):

    >
    > >> BLAS (Intel MKL, ACML, ACML-GPU, GotoBLAS2, or ATLAS)
    > >> Intel VML
    > >> ACML-VM

    >
    > > Thanks for that.  Last time I looked at numpy (for Python3) it
    > > was available in source only.  I know, real men do compile, but
    > > I am an old man...  I will compile if it is unavoidable, but in
    > > case of numpy it does not seem  a simple matter. Am I badly
    > > mistaken?

    >
    > On UNIX machines with compilers and headers properly installed, it's really
    > pretty straightforward.


    Mostly (on ubuntu/debian) that means do this [Untested]
    $ aptitude build-dep python-numpy
    Then you should be ready to build/compile numpy from source
     
    rusi, Apr 25, 2011
    #16
  17. On Monday 25 April 2011 12:59:38 rusi wrote:
    > On Apr 25, 4:49 am, Robert Kern <> wrote:
    > > On 4/22/11 7:32 PM, Algis Kabaila wrote:
    > > > On Saturday 23 April 2011 06:57:23 sturlamolden wrote:
    > > >> On Apr 20, 9:47 am, Algis Kabaila<>
    > > >
    > > > wrote:
    > > >>> Are there any modules for vector algebra (three
    > > >>> dimensional vectors, vector addition, subtraction,
    > > >>> multiplication [scalar and vector]. Could you give me
    > > >>> a reference to such module?
    > > >>
    > > >> NumPy
    > > >>
    > > >> Or one of these libraries (ctypes or Cython):
    > > >>
    > > >> BLAS (Intel MKL, ACML, ACML-GPU, GotoBLAS2, or ATLAS)
    > > >> Intel VML
    > > >> ACML-VM
    > > >
    > > > Thanks for that. Last time I looked at numpy (for
    > > > Python3) it was available in source only. I know, real
    > > > men do compile, but I am an old man... I will compile
    > > > if it is unavoidable, but in case of numpy it does not
    > > > seem a simple matter. Am I badly mistaken?

    > >
    > > On UNIX machines with compilers and headers properly
    > > installed, it's really pretty straightforward.

    >
    > Mostly (on ubuntu/debian) that means do this [Untested]
    > $ aptitude build-dep python-numpy
    > Then you should be ready to build/compile numpy from source


    Thank you, Robert and Rusi,

    I will try it RSN, but first the latest version of ubuntu that
    should become available this week (including today?!).

    OldAl.
    --
    Algis
    http://akabaila.pcug.org.au/StructuralAnalysis.pdf
     
    Algis Kabaila, Apr 25, 2011
    #17
  18. On Apr 20, 2:43 pm, Andreas Tawn <> wrote:
    > > Algis Kabaila <> writes:

    >
    > > > Are there any modules for vector algebra (three dimensional
    > > > vectors, vector addition, subtraction, multiplication [scalar
    > > > and vector]. Could you give me a reference to such module?

    >
    > > NumPy has array (and matrix) types with support for these basic
    > > operations you mention. See the tutorial athttp://numpy.scipy.org/

    >
    > You might also want to considerhttp://code.google.com/p/pyeuclid/
    >
    > Cheers,
    >
    > Drea



    Stealing this from Casey Duncan's recent post to the Grease users
    list:


    - (ab)use complex numbers for 2D vectors (only). Very fast arithmetic
    and built-in to Python. Downside is lack of abstraction.

    - Use pyeuclid (pure python) if ultimate speed isn't an issue, or if
    compiled extensions are. It supports 3D and has a nice api

    - vectypes is a more recent project from the same author as pyeuclid.
    It offers a more consistent 'GLSL' like interface, including
    swizzling, and internally seems to have more maintainable code because
    it generates various sizes of vector and matrix from a single
    template. This is done without performance penalty because the
    generation is done at design time, not runtime.

    - Use pyeigen if you want fast vectors, and don't mind compiling some
    C/C++. I don't know how the Python api looks though

    - Use numpy if you want fast batch operations
     
    Jonathan Hartley, Apr 25, 2011
    #18
  19. On Monday 25 April 2011 20:49:34 Jonathan Hartley wrote:
    > On Apr 20, 2:43 pm, Andreas Tawn <>

    wrote:
    > > > Algis Kabaila <> writes:
    > > > > Are there any modules for vector algebra (three
    > > > > dimensional vectors, vector addition, subtraction,
    > > > > multiplication [scalar and vector]. Could you give me
    > > > > a reference to such module?
    > > >
    > > > NumPy has array (and matrix) types with support for these
    > > > basic operations you mention. See the tutorial
    > > > athttp://numpy.scipy.org/

    > >
    > > You might also want to
    > > considerhttp://code.google.com/p/pyeuclid/
    > >
    > > Cheers,
    > >
    > > Drea

    >
    > Stealing this from Casey Duncan's recent post to the Grease
    > users list:
    >
    >
    > - (ab)use complex numbers for 2D vectors (only). Very fast
    > arithmetic and built-in to Python. Downside is lack of
    > abstraction.
    >
    > - Use pyeuclid (pure python) if ultimate speed isn't an
    > issue, or if compiled extensions are. It supports 3D and has
    > a nice api
    >
    > - vectypes is a more recent project from the same author as
    > pyeuclid. It offers a more consistent 'GLSL' like interface,
    > including swizzling, and internally seems to have more
    > maintainable code because it generates various sizes of
    > vector and matrix from a single template. This is done
    > without performance penalty because the generation is done
    > at design time, not runtime.
    >
    > - Use pyeigen if you want fast vectors, and don't mind
    > compiling some C/C++. I don't know how the Python api looks
    > though
    >
    > - Use numpy if you want fast batch operations

    Jonathan,

    Thank you for a nice and extensive list of references. To
    clarify my position - surprisingly, speed is not an issue- I've
    programmed a matrix in pure python (3, but mainly iwth python 2
    syntax) and found that inversion was quite fast enough for my
    requirements.

    Good vector algebra is necessary for 3 D frame analysis, so a
    vector package is indicated. numpy is great, but it is a tool
    like a sledge to drive a nail...

    OldAl.
    --
    Algis
    http://akabaila.pcug.org.au/StructuralAnalysis.pdf
     
    Algis Kabaila, Apr 26, 2011
    #19
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Anand P Paralkar
    Replies:
    2
    Views:
    9,511
    Srinivasan Venkataramanan
    Aug 4, 2003
  2. Lily
    Replies:
    16
    Views:
    1,373
    Bob Jenkins
    May 10, 2004
  3. Analog Guy

    Conditional Check on Vectors

    Analog Guy, Oct 6, 2004, in forum: VHDL
    Replies:
    3
    Views:
    550
    Paul Uiterlinden
    Oct 7, 2004
  4. Replies:
    3
    Views:
    715
    Shadowman
    Mar 26, 2008
  5. Guest
    Replies:
    0
    Views:
    469
    Guest
    Sep 14, 2005
Loading...

Share This Page