Python 为什么cmp(unicode,np.int64)在UnicodeDecodeError中失败?

Python 为什么cmp(unicode,np.int64)在UnicodeDecodeError中失败?,python,numpy,Python,Numpy,为什么会以这种方式失败: import numpy as np cmp(u"Never", np.int64(500)) #UnicodeDecodeError: 'ascii' codec can't decode byte 0xf4 in position 0: ordinal not in range(128) 虽然成功了: cmp(u"Never", int(np.int64(500))) 我在尝试对包含混合类型的pandas数据帧进行分组时遇到了这个问题 (python 2.7

为什么会以这种方式失败:

import numpy as np
cmp(u"Never", np.int64(500))   #UnicodeDecodeError: 'ascii' codec can't decode byte 0xf4 in position 0: ordinal not in range(128)
虽然成功了:

cmp(u"Never", int(np.int64(500)))
我在尝试对包含混合类型的pandas数据帧进行分组时遇到了这个问题


(python 2.7)

一方面,这是一个你真的不应该做的比较。另一方面,你遇到的这种特殊的错误是相当令人惊讶的。超级奇怪。在我的机器上,
u'
工作,然后
u'
不工作。我猜这就是为什么没有人使用python2anymore@wim:查看这些值中的字节:
divmod(383256)=(1127)
,以及
divmod(384256)=(1128)
。128超出了ascii字符的范围。
u'.\uu lt\uuuuuuuuuuuuuuuuuuuuuuuuuu(np.int64(384))
返回
NotImplemented
使numpy有机会用反射
np.int64.\uuugt\uuuuuuuuuuuuuuuuu
。大概是试图使用
.tobytes().decode()
强制标量。