I have been working with arrays and lists a lot lately and I wanted to view them in column mode rather than in row mode to make documentation easier to follow and to make the output more intuitative. The demo relies on the numpy module, but that is no issue since everyone has it with their ArcMap and ArcGIS Pro installation.
You can alter where an array gets parsed by changing the values in this line...
np.set_printoptions(edgeitems=2,linewidth=80,precision=2,suppress=True,threshold=8)
I altered the [ and ] characters common in lists and arrays, just to show you could do it. I also added an indentation option.
If you like the array output better than the list output, you can simply make an array from a list using ... new_array np.array(input_list) ...
<SPAN class="string token">"""
Script: array_print_demo.py
Author:
<A class="jive-link-email-small" href="mailto:Dan.Patterson@carleton.ca" rel="nofollow noopener noreferrer" target="_blank">Dan.Patterson@carleton.ca</A>
Modified: 2016-01-16
Purpose: Demonstration of formatting arrays/lists in alternate formats
Functions:
- frmt_arr(arr, indents=0)
- indent_arr(arr, indents=1) called by above
"""</SPAN>
<SPAN class="keyword token">import</SPAN> numpy <SPAN class="keyword token">as</SPAN> np
np<SPAN class="punctuation token">.</SPAN>set_printoptions<SPAN class="punctuation token">(</SPAN>edgeitems<SPAN class="operator token">=</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">,</SPAN>linewidth<SPAN class="operator token">=</SPAN><SPAN class="number token">80</SPAN><SPAN class="punctuation token">,</SPAN>precision<SPAN class="operator token">=</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">,</SPAN>suppress<SPAN class="operator token">=</SPAN><SPAN class="token boolean">True</SPAN><SPAN class="punctuation token">,</SPAN>threshold<SPAN class="operator token">=</SPAN><SPAN class="number token">8</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">frmt_arr</SPAN><SPAN class="punctuation token">(</SPAN>arr<SPAN class="punctuation token">,</SPAN> indents<SPAN class="operator token">=</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="string token">"""
Format arrays or lists with dimensions >=3 printed by rows rather
than the usual column expression. Indentation can be employed as well as
the number of indent levels. See string.expandtabs to alter the tab level.
"""</SPAN>
<SPAN class="keyword token">if</SPAN> isinstance<SPAN class="punctuation token">(</SPAN>arr<SPAN class="punctuation token">,</SPAN> list<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
arr <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>asarray<SPAN class="punctuation token">(</SPAN>arr<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># make sure inputs are array</SPAN>
result<SPAN class="operator token">=</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">;</SPAN> temp <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN>
arr_dim <SPAN class="operator token">=</SPAN> arr<SPAN class="punctuation token">.</SPAN>ndim
<SPAN class="keyword token">if</SPAN> arr_dim <SPAN class="operator token"><</SPAN> <SPAN class="number token">3</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">if</SPAN> <SPAN class="punctuation token">(</SPAN>arr_dim <SPAN class="operator token">==</SPAN> <SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">and</SPAN> <SPAN class="punctuation token">(</SPAN>len<SPAN class="punctuation token">(</SPAN>arr<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">></SPAN> <SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
arr <SPAN class="operator token">=</SPAN> arr<SPAN class="punctuation token">.</SPAN>reshape<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">(</SPAN>arr<SPAN class="punctuation token">.</SPAN>shape<SPAN class="punctuation token">[</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> indents<SPAN class="punctuation token">:</SPAN>
arr <SPAN class="operator token">=</SPAN> indent_arr<SPAN class="punctuation token">(</SPAN>arr<SPAN class="punctuation token">,</SPAN> indents<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">return</SPAN> arr
<SPAN class="keyword token">elif</SPAN> arr_dim <SPAN class="operator token">==</SPAN> <SPAN class="number token">3</SPAN><SPAN class="punctuation token">:</SPAN>
temp<SPAN class="punctuation token">.</SPAN>append<SPAN class="punctuation token">(</SPAN>arr<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">elif</SPAN> arr_dim <SPAN class="operator token">></SPAN> <SPAN class="number token">3</SPAN><SPAN class="punctuation token">:</SPAN>
temp <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN>sub <SPAN class="keyword token">for</SPAN> sub <SPAN class="keyword token">in</SPAN> arr<SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">for</SPAN> arr <SPAN class="keyword token">in</SPAN> temp<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> x <SPAN class="keyword token">in</SPAN> zip<SPAN class="punctuation token">(</SPAN><SPAN class="operator token">*</SPAN>arr<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
result<SPAN class="punctuation token">.</SPAN>append<SPAN class="punctuation token">(</SPAN><SPAN class="string token">" "</SPAN><SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>map<SPAN class="punctuation token">(</SPAN>str<SPAN class="punctuation token">,</SPAN>x<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># use tabs \t, not space</SPAN>
<SPAN class="keyword token">if</SPAN> arr_dim <SPAN class="operator token">></SPAN> <SPAN class="number token">3</SPAN><SPAN class="punctuation token">:</SPAN>
result<SPAN class="punctuation token">.</SPAN>append<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"----"</SPAN><SPAN class="punctuation token">)</SPAN>
out <SPAN class="operator token">=</SPAN> <SPAN class="string token">"\n"</SPAN><SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>result<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> indents<SPAN class="punctuation token">:</SPAN>
out <SPAN class="operator token">=</SPAN> indent_arr<SPAN class="punctuation token">(</SPAN>out<SPAN class="punctuation token">,</SPAN> indents<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#out = (str(out).replace("[","|")).replace("]","|")</SPAN>
<SPAN class="comment token">#tabs = " "*indents # "\t"</SPAN>
<SPAN class="comment token"># out = tabs + out.replace("\n","\n" + tabs)</SPAN>
<SPAN class="keyword token">return</SPAN> out
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">indent_arr</SPAN><SPAN class="punctuation token">(</SPAN>arr<SPAN class="punctuation token">,</SPAN> indents<SPAN class="operator token">=</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="string token">"""
Add an indent to a str or repr version of an array.
The number of indents is determined by the indents option.
"""</SPAN>
out <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">(</SPAN>str<SPAN class="punctuation token">(</SPAN>arr<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>replace<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"["</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"|"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>replace<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"]"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"|"</SPAN><SPAN class="punctuation token">)</SPAN>
tabs <SPAN class="operator token">=</SPAN> <SPAN class="string token">" "</SPAN><SPAN class="operator token">*</SPAN>indents <SPAN class="comment token"># "\t"</SPAN>
out <SPAN class="operator token">=</SPAN> tabs <SPAN class="operator token">+</SPAN> out<SPAN class="punctuation token">.</SPAN>replace<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"\n"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"\n"</SPAN> <SPAN class="operator token">+</SPAN> tabs<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">return</SPAN> out
<SPAN class="keyword token">if</SPAN> __name__<SPAN class="operator token">==</SPAN><SPAN class="string token">'__main__'</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="string token">"""largely a demonstration of slicing by array dimensions
"""</SPAN>
<SPAN class="comment token"># syntax frmt_arr(arr, indents=1)</SPAN>
a <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>random<SPAN class="punctuation token">.</SPAN>randint<SPAN class="punctuation token">(</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">1000</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">16</SPAN><SPAN class="punctuation token">)</SPAN>
a1 <SPAN class="operator token">=</SPAN> a<SPAN class="punctuation token">.</SPAN>tolist<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
e <SPAN class="operator token">=</SPAN> a<SPAN class="punctuation token">.</SPAN>reshape<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN> e1 <SPAN class="operator token">=</SPAN> d<SPAN class="punctuation token">.</SPAN>tolist<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>Your preference
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>a1<SPAN class="punctuation token">)</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">135</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">944</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="number token">196</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">335</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="number token">761</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">521</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="number token">529</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">687</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="number token">803</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">393</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="number token">254</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">797</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="number token">610</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">605</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="number token">328</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">516</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> <SPAN class="comment token"># or ...</SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>frmt_arr<SPAN class="punctuation token">(</SPAN>a1<SPAN class="punctuation token">,</SPAN>indents<SPAN class="operator token">=</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="operator token">|</SPAN><SPAN class="operator token">|</SPAN><SPAN class="number token">135</SPAN> <SPAN class="number token">944</SPAN><SPAN class="operator token">|</SPAN>
<SPAN class="operator token">|</SPAN><SPAN class="number token">196</SPAN> <SPAN class="number token">335</SPAN><SPAN class="operator token">|</SPAN>
<SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="operator token">|</SPAN><SPAN class="number token">610</SPAN> <SPAN class="number token">605</SPAN><SPAN class="operator token">|</SPAN>
<SPAN class="operator token">|</SPAN><SPAN class="number token">328</SPAN> <SPAN class="number token">516</SPAN><SPAN class="operator token">|</SPAN><SPAN class="operator token">|</SPAN>
A <SPAN class="number token">3D</SPAN> list <SPAN class="operator token">or</SPAN> array
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>e<SPAN class="punctuation token">)</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">135</SPAN> <SPAN class="number token">944</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">196</SPAN> <SPAN class="number token">335</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">761</SPAN> <SPAN class="number token">521</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">529</SPAN> <SPAN class="number token">687</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">803</SPAN> <SPAN class="number token">393</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">254</SPAN> <SPAN class="number token">797</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">610</SPAN> <SPAN class="number token">605</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">328</SPAN> <SPAN class="number token">516</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> <SPAN class="comment token"># or ...</SPAN>
<SPAN class="operator token">>></SPAN><SPAN class="operator token">></SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>frmt_arr<SPAN class="punctuation token">(</SPAN>e<SPAN class="punctuation token">,</SPAN>indents <SPAN class="operator token">=</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="operator token">|</SPAN><SPAN class="number token">135</SPAN> <SPAN class="number token">944</SPAN><SPAN class="operator token">|</SPAN> <SPAN class="operator token">|</SPAN><SPAN class="number token">761</SPAN> <SPAN class="number token">521</SPAN><SPAN class="operator token">|</SPAN> <SPAN class="operator token">|</SPAN><SPAN class="number token">803</SPAN> <SPAN class="number token">393</SPAN><SPAN class="operator token">|</SPAN> <SPAN class="operator token">|</SPAN><SPAN class="number token">610</SPAN> <SPAN class="number token">605</SPAN><SPAN class="operator token">|</SPAN>
<SPAN class="operator token">|</SPAN><SPAN class="number token">196</SPAN> <SPAN class="number token">335</SPAN><SPAN class="operator token">|</SPAN> <SPAN class="operator token">|</SPAN><SPAN class="number token">529</SPAN> <SPAN class="number token">687</SPAN><SPAN class="operator token">|</SPAN> <SPAN class="operator token">|</SPAN><SPAN class="number token">254</SPAN> <SPAN class="number token">797</SPAN><SPAN class="operator token">|</SPAN> <SPAN class="operator token">|</SPAN><SPAN class="number token">328</SPAN> <SPAN class="number token">516</SPAN><SPAN class="operator token">|</SPAN>
<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>