当我在布尔型数组上使用numpy函数minimum()和maximum()时,结果的类型打印为numpy.int32。但是,与numpy.int32类型的比较失败(即使在强制转换之后)。这是一个bug吗?
g = np.ones((5, 5), dtype = np.bool)
h = np.maximum(g, 4)
i = np.int32(h)
print 'type of g ', g.dtype.type # prints <type 'numpy.bool_'>
print 'type of h ', h.dtype.type # prints <type 'numpy.int32'>
print 'type of i ', i.dtype.type # prints <type 'numpy.int32'>
print h.dtype.type == i.dtype.type # prints True
print h.dtype.type == np.int32 # prints False
print i.dtype.type == np.int32 # prints False
print i.dtype.type == np.bool_ # prints False发布于 2011-04-07 22:40:24
对我来说很正常。使用np.maximum将返回g和4的最大值,即4 (True == 1)。你得到一个由4组成的矩阵,它是整型的。
如果您使用以下语法进行类型比较,则它们是有效的:h.dtype.type == np.dtype(np.int32)或者更简单地说是h.dtype == np.int32。
发布于 2011-04-07 22:39:20
返回类型为数组
numpy.minimum(x1,x2,out)
数组元素的逐元素最小值。
比较两个数组,并返回一个包含逐个元素最小值的新数组。如果被比较的元素之一是nan,则返回该元素。如果两个元素都是nans,则返回第一个元素。后一种区别对于复杂的nan很重要,复杂的nan被定义为至少一个实部或虚部是nan。净效果是nans被传播。
参数:
x1,x2 : array_like保存要比较的元素的数组。它们必须具有相同的形状,或者可以传播到单个形状的形状。返回:
Y:{ndarray,标量} x1和x2的最小值,以元素为单位。如果x1和x2都是标量,则返回标量。
来自:http://docs.scipy.org/doc/numpy/reference/generated/numpy.minimum.html?highlight=minimum#numpy.minimum
发布于 2011-04-07 22:40:02
如果您阅读了np.maximum的文档,就会知道它比较了两个数组,或者在本例中是一个数组和一个标量。因此,对于g的每个元素,它将返回4。
https://stackoverflow.com/questions/5582760
复制相似问题