[Numpy-discussion] equivalent to isempty command in matlab (newbie question)

Filip Wasilewski filip.wasilewski at gmail.com
Wed Dec 6 11:09:52 CST 2006

On 12/6/06, Giorgio Luciano <giorgio.luciano at chimica.unige.it> wrote:
> Today  I've also posted a question to scipy groups because I've thought
> I've found a solution but
> this work good
> bar(N, b1[:,0], width, color='r', yerr=binterv)
>  ############
>  s3=find(sig1[:,arange(ini,c)]<=0.001)

Just a few tips before I answer your question.

Is sig1 a global constant? It is a good practice to write constant
names in uppercase. Otherwise consider passing it as a function

>  b1=b.flatten()
>  #if s3!=[]:

   if s3:

>  for i3 in arange(len(s3)):

   Although this works, a no-surprise way is to use standard xrange:

   for i3 in xrange(len(s3)): ...

   or enumerate:

   for i3, elem in enumerate(s3): ...

>   text(s3[i3], b1[s3[i3]+ini],'***')
>  s2=find(logical_and(sig1[:,arange(ini,c)]>0.001,sig1[:,arange(ini,c)]<=0.01))

 Boolean operators are also ok, just remember about parentheses and
operators priority:

 (sig1[:,arange(ini,c)]>0.001) & (sig1[:,arange(ini,c)]<=0.01)

>  for i2 in arange(len(s2)):
>   text(s2[i2], b1[s2[i2]+ini],'**')
>  s1=find(logical_and(sig1[:,arange(ini,c)]>0.01,sig1[:,arange(ini,c)]<=0.05))
>  for i1 in arange(len(s1)):
>   text(s1[i1], b1[s1[i1]+ini],'*')
>  title('Plot of the coefficients of the model')
> and when i uncomment the ifs3!=[] part it does not...

I think you have just discovered a bug or it's an inconsistency I
didn't know of?

>>> print numpy.array([1,1]) == [], numpy.array([1,1]) != []
False True
>>> print numpy.array([1]) == [], numpy.array([1]) != []
[] []
>>> print numpy.array([]) == [], numpy.array([]) != []
[] []

>>> numpy.__version__

> so in this case I've solve the problem.. but is there an equivalent for
> isempty matlab command in numpy ?

Just like for other Python objects:

if ifs3:
   print "not empty"

or check if .size attribute is positive.


More information about the Numpy-discussion mailing list