numpy already has a MATLAB-like sting parsing matrix creating function,
buried in the "Matrix" class:



In [1]: import numpy as np

In [2]: np.mat('1 2 3; 4 5 6')

Out[2]:
matrix([[1, 2, 3],
        [4, 5, 6]])

That gives you a Matrix, not an array, butyou could wrap it in a little
utility to convert.

But:

1) Matrix is pretty much being phased out -- with the @ operator, it has
little use
2) Hardly anyone ever uses is anyway.

Yes, it's a bit more typing to have to use nested lists for literals, and
that does make a notable difference in a REPL, but still not a big deal
--how often do you need to type, at a REPL, a large array??

if you are doing that a lot, you really need a better workflow!

-CHB




On Sat, Nov 9, 2019 at 2:51 PM Todd <toddr...@gmail.com> wrote:

> I am pretty sure this is a backwards incompatible change.  It isn't likely
> syntax, but I think it is possible.
>
> I also don't like having to wait until the end of the expression to find
> out it isn't a list.  And also seems like it would be easy to miss in a
> non-trivial case.
>
> How would you be parsed?
>
> a = [1, 2, 3;
>      4, 5, 6]
>
>
> On Fri, Nov 8, 2019, 09:13 <yejus...@163.com> wrote:
>
>> In recent years, python has become very popular due to the rise of data
>> science and machine learning. This is mainly because Python is easy to
>> learn and has a large number of third-party libraries, thus accumulating a
>> large number of users.
>>      When Python is applied to scientific computing, there are two
>> problems. One is that Python itself is not fast enough, and the other is
>> that matrix is not a basic data type. The first problem can be well solved
>> by rewriting key codes in C/C++, or by using numba. For the second one,
>> people have invented Numpy which has become the actual matrix computing
>> standard in Python. Although it can do linear algebra, limited by the
>> syntax of Python, using Numpy to initialize a matrix is always not simple
>> enough. We have to do it like this:
>>      import numpy as np
>>      a=np.array([1,2,3])
>>      b=np.array([[1,2,3],[4,5,6]])
>>      While, you know, in Matlab and Julia(A new ambitious and interesting
>> language) it is in this way:
>>      a=[1,2,3] or a=[1 2 3]
>>      b=[1,2,3;4,5,6] or b=[1 2 3;4 5 6]
>>
>>      Of course, python, as a general-purpose language, is not limited to
>> scientific computing, but also used for crawlers, web development, and even
>> writing GUI programs. Therefore, many developers do not need matrix
>> operations, nor need to use numpy as a standard library.
>>      Since numpy has become the cornerstone of Python scientific
>> computing, there is no need to reinvent another wheel, that is, to design
>> new matrix data types. I suggest adding some parsing rules to the List data
>> type to facilitate the initialization of a matrix.
>>
>> (1) Keeping the original syntax of List unchanged,for example:
>>      a = [1,2,3]  # will be parsed to a normal list.
>>      b = [[1,2,3],[4,5,6]]  # will be parsed to a normal list,too.
>>     Simply put, all the original list syntax remains unchanged.
>> (2) Using semicolons as a flag to make a better integration of a
>> List-like data type and Numpy. The Python interpreter will check whether
>> the numpy library is installed. If not, it will stop running and remind the
>> user to install it.  The expected syntax:
>>        c = [1,2,3;]   or c = [1 2 3;] or c = [1 2 3]
>>        Notice the semicolon after the last number. If numpy is found, c
>> will be parsed as a Numpy ndarray. All these forms  are equivelent to c =
>> np.array([1,2,3]). For a vector, the semicolon is the key for Python to
>> parse it as a Numpy ndarray.
>>
>>        d=[1,2,3;4,5,6] or d=[1,2,3;4,5,6;] or d=[1 2 3;4 5 6] or d=[1 2
>> 3;4 5 6;]
>>        Notice the semicolons. If numpy is found, d will be parsed as a
>> Numpy ndarray. All these forms  are equivelent to
>> d=np.array([[1,2,3],[4,5,6]])
>>        You see,for defining a matrix or a vector,it will be nearly as
>> simple as Matalab or Julia!
>>         Thank you!
>> _______________________________________________
>> Python-ideas mailing list -- python-ideas@python.org
>> To unsubscribe send an email to python-ideas-le...@python.org
>> https://mail.python.org/mailman3/lists/python-ideas.python.org/
>> Message archived at
>> https://mail.python.org/archives/list/python-ideas@python.org/message/MGMU6TMPBP7HKIA2TAQI4QG4KCSEQVVQ/
>> Code of Conduct: http://python.org/psf/codeofconduct/
>>
> _______________________________________________
> Python-ideas mailing list -- python-ideas@python.org
> To unsubscribe send an email to python-ideas-le...@python.org
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-ideas@python.org/message/DB65OI7MC6YHY7QBJ2A4VSBDR2VMBDPT/
> Code of Conduct: http://python.org/psf/codeofconduct/
>


-- 
Christopher Barker, PhD

Python Language Consulting
  - Teaching
  - Scientific Software Development
  - Desktop GUI and Web Development
  - wxPython, numpy, scipy, Cython
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/PLYV5ZTTWEN6Y6VFEGRK7B4TGOPH3TZ5/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to