Numpy 相等数据类型

Numpy equal dtype

np.equal 中是否应考虑关键字参数 dtype

在函数documentation中,它似乎表明dtype应该是一个有效的关键字参数,我找不到任何说它会被忽略的东西,但是当使用逻辑ufuncs时,它似乎没有被使用:

>>> 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')

如果指定了 return dtype,我希望任何 ufunc 都具有相同的输出类型,但是 np.add 的行为符合我的预期,而 np.equal 则没有。这种行为是故意的吗?

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 值