dtype
np.equal
?
在函数documentation中,它似乎表明dtype
应该是一个有效的关键字参数,而且我找不到任何说它会被忽略的东西,但是当使用逻辑ufunc时,它似乎没有被使用:
>>> import numpy as np
>>> np.__version__
'1.14.2'
>>> a = b = np.arange(2).astype(np.uint8)
>>> np.equal(a, b, dtype=float).dtype
dtype('bool')
>>> np.add(a, b).dtype
dtype('uint8')
>>> np.add(a, b, dtype=float).dtype
dtype('float64')
如果指定了返回dtype,我希望任何ufunc具有相同的输出类型,但np.add
的行为与我预期的相同,而np.equal
则不然。这种行为是否打算?
答案 0 :(得分:2)
np.equal()
是一个“ufunc”,所有这些都有一个可选的dtype
参数。但并非所有ufunc实际上都需要dtype
参数 - 它只是其通用签名的一部分。
想要更改np.equal()
的输出dtype非常罕见,但如果必须,可以这样做:
result = np.empty(np.broadcast(a, b).shape, float)
np.equal(a, b, out=result)
out
参数使dtype
无关(对于所有ufunc),最终在result
中得到0.0和1.0值。