当函数需要单个值但您传递数组时,会出现错误“仅将length-1数组可以转换为Python标量”。
如果查看的呼叫签名
np.int,您会看到它接受单个值,而不是数组。通常,如果要对数组中的每个元素应用一个接受单个元素的函数,则可以使用
np.vectorize:
import numpy as npimport matplotlib.pyplot as pltdef 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建议。



