2010-03-14 43 views
0

如果列表或數組包含字符串的numpy.equal功能不起作用:numpy.equal字符串值

>>> import numpy 
>>> index = numpy.equal([1,2,'a'],None) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: function not supported for these types, and can't coerce safely to supported types 

什麼是解決此不通過每個元素循環的最簡單的方法?最後,我需要index包含一個布爾數組,指示哪些元素是None

回答

2

如果你確實需要使用numpy的,要小心你傳遞什麼,它可以工作:

>>> import numpy 
>>> a = numpy.array([1, 2, 'a'], dtype=object) # makes type of array what you need 
>>> numpy.equal(a, None) 
array([False, False, False], dtype=bool) 

既然你開始一個列表,有一個機會,你真正想要的是隻是一個列表理解,如[item is None for item in [1, 2, 'a']]或類似的生成器表達式。

要有這樣的異構列表很奇怪。列表(和numpy數組)通常用於同類數據。

1

股票列表理解有什麼問題?

index = [x is None for x in L]