numpy.equal与字符串值

0 投票
2 回答
3557 浏览
提问于 2025-04-15 20:25

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数组)是用来存放同一种类型的数据的。

撰写回答