使用对象dtype的ndarray与None进行元素比较

时间:2017-05-31 22:57:11

标签: python arrays numpy

x = np.empty([2], dtype=object)
> array([None, None], dtype=object)

x[0] = 'a'
> array(['a', None], dtype=object)

我正在尝试从此类型为[False, True]的对象中获取布尔数组ndarray,其中对象类型为None

不起作用的事情:x is Nonex.isfinite()x == Nonenp.isnan(x)。该数组可能处于n维度,这使得循环迭代看起来不愉快。

3 个答案:

答案 0 :(得分:7)

在NumPy 1.12及更早版本中,您需要显式调用f2 <- " +(carb|gear)" newmodels <- lapply(xnam2, function(x) { lmer(substitute(paste(fla), i + (paste(f2)), list(i = as.name(x))), data = mtcars) }) 以获得广播的相等比较。发表评论,以便未来的读者理解你为什么要这样做:

numpy.equal

在NumPy 1.13及更高版本中,x == None will give you a broadcasted equality comparison,但如果您想要与早期版本向后兼容,则仍可以使用# Comparisons to None with == don't broadcast (yet, as of NumPy 1.12). # We need to use numpy.equal explicitly. numpy.equal(x, None)

答案 1 :(得分:3)

您可以将None包裹在listarray中以强制进行元素比较:

>>> x == [None]
array([False,  True], dtype=bool)

>>> x == np.array([None])
array([False,  True], dtype=bool)

答案 2 :(得分:1)

一些可能的方法是 -

x < 0
x!='a'
  

array([True,False],dtype = bool)