python - 为什么python中的计算机之间的强制转换规则不同?

标签 python macos numpy

我在我的 Mac 上运行 python 2.7,并且我正在与使用 Ubuntu 的其他人一起开展一个小组编码项目。每隔一段时间,由于转换规则错误,他们编写的代码将无法在我的计算机上运行:

    273     # Apply column averages to image
--> 274     img[:middle] *= (bg[0]/np.tile(topCol, (middle,1)))
    275     img[middle:] *= bg[1]/np.tile(botCol, (middle,1))
    276 

TypeError: Cannot cast ufunc multiply output from dtype('float64') to dtype('int16') with casting rule 'same_kind'

我认为您不需要详细信息,因为这种情况发生在不同数字类型的几个不同地方。

它可以在他们所有的计算机上运行,​​没问题。我写的所有东西都对他们有用,但他们写的东西经常对我不起作用。

我们的机器有什么不同意的原因吗?有什么方法可以改变我的结果吗?

谢谢!

最佳答案

This thread建议您的 numpy 比您同事使用的版本更新(请使用 numpy.version.version 检查)。在 1.7.0 开发分支中,他们似乎已将隐式转换规则更改为更严格的 same_kind 规则,该规则禁止(除其他外)浮点和整数格式之间的转换。

要解决这个问题,我建议使用如下代码:

img[:middle] *= (bg[0]/np.tile(topCol, (middle,1))).astype(img.dtype)

关于python - 为什么python中的计算机之间的强制转换规则不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14269164/

相关文章:

python - 压缩迭代器和计数迭代器的乘积

cocoa - 在 rsync NSTask 方法中包装排除选项

mysql - 在哪里存储要在 mySQL 中使用的数据库 DDL 脚本?

python - 更快的 numpy.polynomial?

numpy - 在 Julia 的几何空间中 build

python - 在 Pandas Dataframe 中搜索动态单词数

python - 在 boost::python::import ("cv2"上得到异常 boost::python::error_already_set )

python - 使用Python解码未知编码的繁体中文字符串

java - WinXP 和 Mac OS X 中的 MySql

python - numpy 和稀疏矩阵之间的点积