首页 > 解决方案 > 类型错误:尽管 np.vectorize 只能将大小为 1 的数组转换为 Python 标量弹出

问题描述

当我使用 Matplotlib 在图表上绘制对数时,TypeError: only size-1 arrays can be converted to Python scalars弹出了。我在 Stack 中搜索了这个并且有一个建议使用的答案,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()不起作用,我该如何解决?

标签: pythonnumpymatplotlib

解决方案


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

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

推荐阅读