Der All,

Here in this NoteBook I tried to compare my unicode implementation with Eric's HTML version plus links to the discussions on different forums if you like to follow

For example:

chrome_2018-11-07_10-15-20.png

Best regards,
Foad


On Wed, Nov 7, 2018 at 9:24 AM Foad Sojoodi Farimani <f.s.farimani@gmail.com> wrote:
Dear Eric,

In between your lines:

On Wed, Nov 7, 2018 at 7:23 AM Eric Wieser <wieser.eric+numpy@gmail.com> wrote:

Foad:

having the functionality for conventional consols would also help

I think the most important thing in a conventional console is to output the array in a format that allows you to reconstruct the object. That makes it way easier for people to reproduce each others problems without having their full dataset. If your goal is to visualize complex arrays, I think the console is a pretty limited tool, and numpy already does as much as is worthwhile there.

I agree with most of what you say:
  1. the current representation of numpy array with print() is of course already there and it is not my goal to replace it. but rather add something like Sympy's pprint function, an alternative representation. 
  2. the reason I'm using console is first because there are people who use it and secondly because I have no idea how to do what you are doing :)) there is room for both I think

I don’t think putting everything in boxes is helping. it is confusing. I would rather having horizontal and vertical square brackets represent each nested array

See my update at the same link, which shows an alternative which draws those brackets as you envi

wow this is awesome:


2018-11-07_09-07-37.gif

I wonder if you could make this the default view without the need of those other inputs or the lamda function? this is almost 80% of what I had in mind

 

it would be awesome if in IPython/Jupyter hovering over an element a popup would show the index

It… already does?

it doesn't on my browser :( 

to show L R U P or combination of these plus some numbers

I don’t know what you mean by this.

imaging the Pandas .head() and .tail functions which accept positive integer inputs to show specific number of rows. now our print function could have  two inputs one string which should be L for left, R for right, U for up and D for down. respectively UL, UR, DL and DR for corners. another input is a tuple of integers which in the case of U,D,L,R is only one integer showing the number of rows or columns. and in the case of UL, UR, DL, DR two integers showing the number of rows and columns in that specific corner to be shown. 

What could be added:
  1. adding slide bars for big datasets
  2. compressing the result according to the terminals dimensions (as Pandas does)
  3. editing the variables like Spyders variable explorer
  4. adding dimensions or rows/columns within a dimension or elements in rows/columns
Again thanks a lot for your help. I appreciate your kind support. 

Best,
Foad

Eric

On Tue, 6 Nov 2018 at 00:56 Foad Sojoodi Farimani f.s.farimani@gmail.com wrote:

Wow, this is awesome.
Some points though:
  • not everybody uses IPython/Jupyter having the functionality for conventional consols would also help. something like Sypy's init_printing/init_session which smartly chooses the right representation considering the terminal.
  • I don't think putting everything in boxes is helping. it is confusing. I would rather having horizontal and vertical square brackets represent each nested array
  • it would be awesome if in IPython/Jupyter hovering over an element a popup would show the index
  • one could read the width and height of the terminal and other options I mentioned in reply Mark to show L R U P or combination of these plus some numbers (similar to Pandas .head .tail) methods and then show the rest by unicod 3dot
P.S. I had no idea our university Microsoft services also offers Azure Notebooks awesome :P

F.

On Tue, Nov 6, 2018 at 9:45 AM Eric Wieser <wieser.eric+numpy@gmail.com> wrote:
Here's how that could look


Feel free to play around and see if you can produce something more useful



On Mon, 5 Nov 2018 at 23:28 Foad Sojoodi Farimani <f.s.farimani@gmail.com> wrote:
It is not highking if I asked for it :))
for IPython/Jupyter using Markdown/LaTeX would be awesome 
or even better using HTML to add sliders just like Pandas...

F.

On Tue, Nov 6, 2018 at 6:51 AM Eric Wieser <wieser.eric+numpy@gmail.com> wrote:
Hijacking this thread while on the topic of pprint - we might want to look into a table-based `_html_repr_` or `_latex_repr_` for use in ipython - where we can print the full array and let scrollbars replace ellipses.

Eric

On Mon, 5 Nov 2018 at 21:11 Mark Harfouche <mark.harfouche@gmail.com> wrote:

Foad,

Visualizing data is definitely a complex field. I definitely feel your pain.
Printing your data is but one way of visualizing it, and probably only useful for very small and constrained datasets.
Have you looked into set_printoptions to see how numpy’s existing capabilities might help you with your visualization?

The code you showed seems quite good. I wouldn’t worry about performance when it comes to functions that will seldom be called in tight loops.
As you’ll learn more about python and numpy, you’ll keep expanding it to include more use cases.
For many of my projects, I create small submodules for visualization tailored to the specific needs of the particular project.
I’ll try to incorporate your functions and see how I use them.

Your original post seems to have some confusion about C Style vs F Style ordering. I hope that has been resolved.
There is also a lot of good documentation
https://docs.scipy.org/doc/numpy/user/numpy-for-matlab-users.html#numpy-for-matlab-users-notes
about transitioning from matlab.

Mark


On Mon, Nov 5, 2018 at 4:46 PM Foad Sojoodi Farimani <f.s.farimani@gmail.com> wrote:
Hello everyone,

Following this question, I'm convinced that numpy ndarrays are not MATLAB/mathematical multidimentional matrices and I should stop expecting them to be. However I still think it would have a lot of benefit to have a function like sympy's pprint to pretty print. something like pandas .head and .tail method plus  .left .right .UpLeft .UpRight .DownLeft .DownRight methods. when nothing mentioned it would show 4 corners and put dots in the middle if the array is to big for the terminal. 

Best,
Foad
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion

_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion