我有一個平滑函數f(x)= sin(x/5)* exp(x/10)+ 5 * exp(-x/2) 任務是在1到30的區間上探索非光滑函數h(x)= int(f(x))。換句話說,f(x)的每個值都被轉換爲int類型,並且該函數僅接受整數值。我正在嘗試在matplotlib的幫助下構建h(x)。將浮點數組轉換爲整數時的TypeError
import math
import numpy as np
from scipy.optimize import minimize
from scipy.linalg import *
import matplotlib.pyplot as plt
def f(x):
return np.sin(x/5.0) * np.exp(x/10.0) + 5 * np.exp((-x/2.0))
def h(x):
return int(f(x))
x = np.arange(1, 30)
y = h(x)
plt.plot(x, y)
plt.show()
該代碼不起作用。運行代碼引發
TypeError: only length-1 arrays can be converted to Python scalars
使用VS我得到:
「代碼不起作用。」不是一個適當的問題描述。在這種情況下,猜測錯誤是相當容易的,但是一般而言,沒有適當問題描述的問題就是主題。這裏的問題是你的函數'f'返回一個數組。要將numpy數組轉換爲整數,您需要'array.astype(int)'。 – ImportanceOfBeingErnest