出于某種原因,我無法理解如何以更簡潔的方式創建以下函式,我想我需要使用for回圈,但我真的很難實作這一點。任何幫助都將不勝感激,我是 python 的初學者!
x = np.linspace(0, 20, 100)
f1 = (((-1)**((1 - 1)/2)) / (1**2)) * np.sin((1 * np.pi * x) / 10)
f3 = (((-1)**((3 - 1)/2)) / (3**2)) * np.sin((3 * np.pi * x) / 10)
f5 = (((-1)**((5 - 1)/2)) / (5**2)) * np.sin((5 * np.pi * x) / 10)
f7 = (((-1)**((7 - 1)/2)) / (7**2)) * np.sin((7 * np.pi * x) / 10)
f9 = (((-1)**((9 - 1)/2)) / (9**2)) * np.sin((9 * np.pi * x) / 10)
f11 = (((-1)**((11 - 1)/2)) / (11**2)) * np.sin((11 * np.pi * x) / 10)
f13 = (((-1)**((13 - 1)/2)) / (13**2)) * np.sin((13 * np.pi * x) / 10)
f15 = (((-1)**((15 - 1)/2)) / (15**2)) * np.sin((15 * np.pi * x) / 10)
uj5u.com熱心網友回復:
x = np.linspace(0,20,100)
f = []
for i in range(1, 16, 2):
f.append((((-1)**((i-1)/2))/(i**2))*np.sin((i*np.pi*x)/10))
那行得通嗎?
uj5u.com熱心網友回復:
你必須做這樣的事情:
l = []
x = np.linspace(0,20,100)
for i in range(1, 16, 2):
l.append((((-1)**((i-1)/2))/(i**2))*np.sin((i*np.pi*x)/10))
uj5u.com熱心網友回復:
如果您正在尋找一種可以接受一個或多個引數(稱為a)的矢量化函式,以及 的可選替代品x,您可以執行以下操作:
def f(a, x=None):
if x is None:
x = np.linspace(0, 20, 100)
a = np.array(a, copy=False, ndmin=1)[..., None]
return (((-1)**((a - 1) / 2)) / (a**2)) * np.sin((a * np.pi * x) / 10)
將陣列廣播在一起可以使您無需運行顯式回圈。你可以呼叫f如
f(np.arange(1, 16, 2))
或者
f(1)
f(3)
f(5)
...
事實上,你可以檢查
np.array_equal(f(np.arange(1, 16, 2)), [f1, f3, f5, f7, f9, f11, f13, f15])
uj5u.com熱心網友回復:
x = np.linspace(0,20,100)
i = 1
dictAnswer={}
while i < 50:
answer = (((-1)**((i-1)/2))/(i**2))*np.sin((i*np.pi*x)/10)
dictAnswer[f'f{i}'] = answer
i =2
這個回圈會一直運行到f49。您可以while i < 50根據需要更改。現在這會將所有答案保存在dictionary. 您可以看到以下答案:print(dictAnswer[f1])。
請注意,這不會列印出整個字串,而只會列印出公式所需的確切答案
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/383426.html
上一篇:Python-Scipy和Numpy不相處-在scipy.optimize.curve_fit中使用numpy陣列的問題
下一篇:將時間序列列更改為日期
