TypeError: Cannot cast array data from dtype('float64') to dtype('int64') according to the rule 'safe'
时间: 2023-12-13 09:05:26 浏览: 222
解决Python 异常TypeError: cannot concatenate str and int objects
3星 · 编辑精心推荐
这个错误通常发生在试图将浮点数数组转换为整数数组时。可能原因是你试图使用 `astype()` 函数将浮点数组转换为整数数组,但是某些元素无法转换为整数,例如 NaN(非数字)或无穷大。
要解决这个问题,你可以尝试以下方法:
1. 检查数组中是否有非数字或无穷大的元素。如果有,可以考虑先将它们替换为其他值,然后再进行数据类型转换。
2. 尝试使用 `numpy.round()` 函数将浮点数数组四舍五入为整数数组,然后再进行数据类型转换。
3. 如果你确定浮点数可以直接转换为整数,可以使用 `numpy.floor()` 或 `numpy.ceil()` 函数将浮点数向下或向上取整,然后再进行数据类型转换。
示例代码:
```python
import numpy as np
# 生成一个包含 NaN 和无穷大的浮点数数组
a = np.array([1.0, 2.0, np.nan, np.inf])
# 将 NaN 和无穷大替换为 0
a[np.isnan(a) | np.isinf(a)] = 0
# 四舍五入并转换为整数
a = np.round(a).astype(np.int64)
```
阅读全文