我希望将一个NumPy(版本1.11.0)数组从
我原以为可以使用
我希望以下代码可以正常运行:
float64
转换为int64
。我希望这个操作能够在整数上执行,但在非整数上失败。我原以为可以使用
casting=safe
,但很明显我的想法是错误的...我希望以下代码可以正常运行:
np.array([1.0]).astype(int, casting='safe')
而这将会失败:
np.array([1.1]).astype(int, casting='safe')
但他们都以此错误失败:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-51-7261ddf00794> in <module>()
1 import numpy as np
2 print(np.__version__)
----> 3 np.array([1.0]).astype(int, casting='safe')
TypeError: Cannot cast array from dtype('float64') to dtype('int64') according to the rule 'safe'
我猜我对安全转换的理解有误,因此这可能不是实现这一目标的最佳方法。有没有更好的方法使第一个示例正常工作但第二个示例失败?
safe
是用于转换时不会丢失任何信息的强制类型转换。它并不关心值,只关心类型。换句话说,float
->int
并不是对于整个float
域来说都是安全的转换。但反过来应该是安全的。 - ebolyen