TypeError:尽管有np.vectorize,但只能将大小为1的数组转换为Python标量

TypeError:尽管有np.vectorize,但只能将大小为1的数组转换为Python标量,python,numpy,matplotlib,Python,Numpy,Matplotlib,当我使用MatplotlibTypeError在图形上绘制对数时:只有大小为1的数组才能转换为Python标量。我在堆栈中搜索了这个,有一个答案建议使用numpy.vectorize(),但当我尝试时,它不起作用,并输出了完全相同的错误。代码如下所示 x = np.linspace(0, 100, num = 10) plt.plot(x, x, label = "x") plt.plot(x, np.vectorize(math.log2(64*x - 160)), lab

当我使用Matplotlib
TypeError在图形上绘制对数时:只有大小为1的数组才能转换为Python标量。我在堆栈中搜索了这个,有一个答案建议使用
numpy.vectorize()
,但当我尝试时,它不起作用,并输出了完全相同的错误。代码如下所示

x = np.linspace(0, 100, num = 10)
plt.plot(x, x, label = "x")
plt.plot(x, np.vectorize(math.log2(64*x - 160)), label = "Log2(64x - 160)")

为什么是
numpy.vectorize()
不起作用,我如何修复它?

vectorize
无关。问题是你不能做负数的log2。如果按以下方式更改起始范围,则它将起作用:

x=np.linspace(3100,num=10)
plt.绘图(x,x,label=“x”)
plt.plot(x,np.log2(64*x-160),label=“log2(64x-160)”)

矢量化无关。问题是你不能做负数的log2。如果按以下方式更改起始范围,则它将起作用:

x=np.linspace(3100,num=10)
plt.绘图(x,x,label=“x”)
plt.plot(x,np.log2(64*x-160),label=“log2(64x-160)”)