绘制自相关函数图触发UFuncTypeError,是否需转换trace为float?
问题解答
是的,把trace_x和trace_y转换为float类型就能解决这个报错。
错误根源
plt.acorr在计算自相关系数时会涉及浮点除法等运算,但你的trace_x和trace_y是存储整数的列表。numpy处理这类运算时,会试图将浮点结果强制转回int32类型,触发类型不兼容的错误。
修复代码
在绘图前将列表转为float类型的numpy数组即可,修改后的绘图代码如下:
# Plot the autocorrelation function for X and Y plt.acorr(np.array(trace_x, dtype=np.float64), maxlags=50) plt.title('Autocorrelation plot for X') plt.xlabel('Lag') plt.ylabel('Autocorrelation') plt.show() plt.acorr(np.array(trace_y, dtype=np.float64), maxlags=50) plt.title('Autocorrelation plot for Y') plt.xlabel('Lag') plt.ylabel('Autocorrelation') plt.show()
也可以先把两个trace转成数组再绘图,效果一样。这样就能消除类型转换冲突,让自相关计算顺利完成。
内容的提问来源于stack exchange,提问作者user12704077
相关产品推荐
相关产品推荐

