使用ufunc bitwise_xor输入TypeError

时间:2014-03-29 00:24:53

标签: python if-statement numpy typeerror

在我追踪粒子路径的程序中,我收到以下错误:

Traceback (most recent call last):
  File "C:\Users\Felix\Google Drive\Research\particles.py", line 154, in <module>
    bfield += b_X(r_p(r,pos[2]))*(r_p(r,pos[2])/r)   
   *((r-r_p(r,pos[2]))**2+pos[2]**2)^(-1/2)*np.array
   ([(1-r_p(r,pos[2])/r)*pos[0],(1-r_p(r,pos[2])/r)*pos[1],pos[2]])

TypeError: ufunc 'bitwise_xor' not supported for the input types, 
and the inputs could not be safely coerced to any supported types 
according to the casting rule ''safe''

我似乎无法找到正在发生的事情。我没有任何xor实例(尽管我认为它可能在if / else语句中编码)。

1 个答案:

答案 0 :(得分:27)

如果您希望^将某个值提升为电量,则在违规行中您使用的是**。 Python将其解释为xor:

bfield += b_X(r_p(r,pos[2]))*(r_p(r,pos[2])/r)*((r-r_p(r,pos[2]))**2+
        pos[2]**2)^(-1/2)*np.array([(1-r_p(r,pos[2])/r)*pos[0],
        (1-r_p(r,pos[2])/r)*pos[1],pos[2]])

见:

http://docs.python.org/2/reference/expressions.html#binary-bitwise-operations