<div dir="ltr"><div><div><div><div><div><div><div>Hello,<br><br></div>I try to use *ListIndex* to retrieve the index of a named variable (2-D) that has been pushed into a List variable. But, it failed.<br><br></div>Then, I spent some time to explore the reason. I start with a simple 1-D example that is gave by NCL webpage (<a href="http://www.ncl.ucar.edu/Document/Functions/Built-in/ListIndex.shtml">http://www.ncl.ucar.edu/Document/Functions/Built-in/ListIndex.shtml</a>). It does what it does. However, when I expended those example arrays into 2-D, function *ListIndes* collapsed. Here are what I did and what output shows:<font size="1"><b><br><br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>; for 1D, it works fine<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>  x = (/1,2,3,4/)<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>  x@attr = &quot;integer array&quot;<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>  y = (/6.,7.,8.,9./)<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>  y@attr = &quot;float array&quot;<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>  s = (/&quot;one&quot;,&quot;two&quot;,&quot;three&quot;/)<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>  s@attr = &quot;string array&quot;<br></b></font><font size="1"><b>&gt; </b></font><br><font size="1"><b><font size="1"><b>&gt; </b></font>  my_list = NewList(&quot;lifo&quot;)<br></b></font><font size="1"><b>&gt; </b></font><br><font size="1"><b><font size="1"><b>&gt; </b></font>  ListPush(my_list,x)<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>  ListPush(my_list,y)<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>  ListPush(my_list,s)<br></b></font><font size="1"><b>&gt; </b></font><br><font size="1"><b><font size="1"><b>&gt; </b></font>  cnt = ListCount(my_list)<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>  print(cnt)<br></b></font><font size="1"><b>&gt; </b></font><br><font size="1"><b><font size="1"><b>&gt; </b></font>  idx = ListIndex(my_list, x)<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>  print(idx)<br></b></font><font size="1"><b>&gt; </b></font><br><font size="1"><b><font size="1"><b>&gt; </b></font>; For 2D<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>  nx    = dimsizes ( x )<br></b></font><font size="1"><b><font size="1"><b>&gt;  </b></font></b></font><font size="1"><b>X     = conform_dims ( (/2,nx/), x, 1 )</b></font><br><font size="1"><b><font size="1"><b>&gt; </b></font>  ny    = dimsizes ( y )<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>  Y     = conform_dims ( (/2,ny/), y, 1 )</b></font><br><font size="1"><b><font size="1"><b>&gt; </b></font>  ns    = dimsizes ( s )<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>  S     = conform_dims ( (/2,ns/), s, 1 )<br></b></font><font size="1"><b>&gt; </b></font><br><font size="1"><b><font size="1"><b>&gt; </b></font>  MY_list = NewList(&quot;lifo&quot;)<br></b></font><font size="1"><b>&gt; </b></font><br><font size="1"><b><font size="1"><b>&gt; </b></font>  ListPush(MY_list,X)<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>  ListPush(MY_list,Y)<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>  ListPush(MY_list,S)<br></b></font><font size="1"><b>&gt; </b></font><br><font size="1"><b><font size="1"><b>&gt; </b></font>  Cnt = ListCount(MY_list)<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>  print(Cnt)<br></b></font><font size="1"><b>&gt; </b></font><br><font size="1"><b><font size="1"><b>&gt; </b></font>  Idx = ListIndex(MY_list, X)<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>  print(Idx)</b></font><br><font size="1"><b></b></font><br></div>And the output is:<font size="1"><b><br><br>&gt; Variable: cnt<br>&gt; Type: integer<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>Total Size: 4 bytes<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>            1 values<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>Number of Dimensions: 1<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>Dimensions and sizes:   [1]<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>Coordinates: <br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>(0)     3<br></b></font><font size="1"><b>&gt; </b></font><br><font size="1"><b><font size="1"><b>&gt; </b></font><br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>Variable: idx<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>Type: integer<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>Total Size: 4 bytes<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>            1 values<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>Number of Dimensions: 1<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>Dimensions and sizes:   [1]<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>Coordinates: <br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>(0)     2<br></b></font><font size="1"><b>&gt; </b></font><br><font size="1"><b><font size="1"><b>&gt; </b></font><br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>Variable: Cnt<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>Type: integer<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>Total Size: 4 bytes<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>            1 values<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>Number of Dimensions: 1<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>Dimensions and sizes:   [1]<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>Coordinates: <br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>(0)     3<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>fatal:Number of dimensions in parameter (1) of (ListIndex) is (2), (1) dimensions were expected <br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>fatal:[&quot;Execute.c&quot;:8578]:Execute: Error occurred at or near line 40 in file test_ListIndex.ncl<br></b></font><font size="1"><b>&gt; </b></font><br><font size="1"><b><font size="1"><b>&gt; </b></font>fatal:Variable (Idx) is undefined<br></b></font><font size="1"><b><font size="1"><b>&gt; </b></font>fatal:[&quot;Execute.c&quot;:8578]:Execute: Error occurred at or near line 41 in file test_ListIndex.ncl</b></font><br><br></div>As shown in the 4th line from the bottom of the output, *ListIndex* expects a 1-D array, while a 2-D array is fed in, it does not retrieve anything and collapse.<br><br></div>Any idea about this?<br><br></div>Best,<br></div>Liang<br></div>