我正在嘗試傳遞所有陣列,例如分子重量(濃度,時間)`
concentration_time = np.array([[0,83],
[0.04,89],
[0.06,95],
[0.08,104],
[0.1,114],
[0.12,126],
[0.14,139],
[0.16,155],
[0.20,191]])
concentration = [item[0] for item in concentration_time]
time = [item[1] for item in concentration_time]
t0 = 83
def molecularWeight(c,t):
answer = ((t/t0)-1)/c
return answer
molecularWeight(concentration,time)
我期待得到一個有 9 個不同輸出的輸出。我想傳遞 c 和 t 的所有對并為每個對獲得輸出。
當我手動傳遞值時,我得到了所需的輸出:molecularWeight(0.04,89.0)
但當我嘗試使用先前定義的變數傳遞所有這些值時卻沒有:molecularWeight(concentration,time)錯誤:
TypeError: unsupported operand type(s) for /: 'list' and 'int'
uj5u.com熱心網友回復:
python 中的串列不支持加法/減法/其他數學運算。
您需要在元素對numpy的串列理解(或回圈)中使用或顯式執行操作...zipped
例如:
import numpy as np
def molecularWeight(c,t):
c = np.array(c)
t = np.array(t)
answer = ((t/t0)-1)/c
return answer
molecularWeight(concentration,time)
或相反:
def molecularWeight(c,t):
try:
answer = ((t/t0)-1)/c
except TypeError:
answer = [((t_/t0)-1)/c_ for c_, t_ in zip(c, t)]
return answer
molecularWeight(concentration,time)
請注意,您從一個numpy陣列開始,因此您可以從一開始就堅持下去,保留您定義的函式,但請確保傳入 numpy-arrays 而不是串列:
concentration = concentration_time[:, 0]
time = concentration_time[:, 1]
uj5u.com熱心網友回復:
例如,在此處為您的部門 (1e-9) 添加安全性以避免 div 為零
concentration ,time = concentration_time[:,0], concentration_time[:,1]
t0 = 83
def molecularWeight(c,t):
return ((t / t0) - 1) / (c 1e-9)
molecularWeight(concentration,time)
uj5u.com熱心網友回復:
如果我理解正確的話,這可能就是你想要的。
您正確地將串列作為輸入提供給函式,但沒有正確迭代它。
def molecularWeight(inputs):
answers = []
for c, t in inputs:
answer = ((t/t0)-1)/c
answers.append(answer)
return answers
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/528657.html
