Numpy等于dtype

时间:2018-05-03 02:50:28

标签: python numpy numpy-ufunc

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则不然。这种行为是否打算?

1 个答案:

答案 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值。