如何解决TypeError:只有长1的数组可以转换为Python标量,而图显示
当函数需要单个值但您传递数组时,会出现错误“仅将length-1数组可以转换为Python标量”。
如果查看的呼叫签名np.int
,您会看到它接受单个值,而不是数组。通常,如果要对数组中的每个元素应用一个接受单个元素的函数,则可以使用np.vectorize
:
import numpy as np
import matplotlib.pyplot as plt
def f(x):
return np.int(x)
f2 = np.vectorize(f)
x = np.arange(1, 15.1, 0.1)
plt.plot(x, f2(x))
plt.show()
您可以跳过f(x)的定义,而只需将np.int传递给vectorize函数:f2 = np.vectorize(np.int)
。
注意,这np.vectorize
只是一个便利函数,基本上是for循环。在大型阵列上这将是低效的。每当你有可能,使用真正的矢量函数或方法(如astype(int)
为@FFT建议。
解决方法
我有这样的Python代码:
import numpy as np
import matplotlib.pyplot as plt
def f(x):
return np.int(x)
x = np.arange(1,15.1,0.1)
plt.plot(x,f(x))
plt.show()
而这样的错误:
TypeError: only length-1 arrays can be converted to Python scalars
我该如何解决?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。