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 值
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
.