我在我的 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/