0

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

在函数文档中,它似乎表明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没有。这种行为是有意的吗?

4

1 回答 1

2

np.equal()是一个“ ufunc ”,它们都有一个可选dtype参数。但并非所有 ufunc 实际上都需要该dtype参数——它只是其通用签名的一部分。

想要更改 的输出 dtype 是非常罕见的np.equal(),但如果必须,您可以这样做:

result = np.empty(np.broadcast(a, b).shape, float)
np.equal(a, b, out=result)

out参数dtype无关紧要(对于所有 ufunc),您最终会在result.

于 2018-05-03T03:00:47.763 回答