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 个回答
1
股票列表推导有什么问题?
index = [x is None for x in L]
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数组)是用来存放同一种类型的数据的。