我正在實現的代碼在Python中有變量存儲在numpy向量。我需要執行簡單的操作:像(vec1 + vec2^2)/ vec3。每個矢量的每個元素相加並相乘。 (MATLAB的元模擬操作)。通過字符串輸入與字典numpy數組Python的eval函數與字典
的問題是在我的代碼我有字典存儲所有矢量是:
var = {'a':np.array([1,2,2]),'b':np.array([2,1,3]),'c':np.array([3])}
該第三矢量只有1號,這意味着我想通過在其他陣列樣3的每個元素乘以這個數* [1,2,3]。並且在同一時間我有作爲字符串提供了式:
formula = '2*a*(b/c)**2'
我使用正則表達式替換式:
formula_for_dict_variables = re.sub(r'([A-z][A-z0-9]*)', r'%(\1)s', formula)
其產生的結果:
2*%(a)s*(%(b)s/%(c)s)**2
和替代字典變量:
eval(formula%var)
在這種情況下,我只是純數字(不是numpy數組),一切正常,但是當我將numpy.arrays放在字典中時,我收到一個錯誤。
你可以舉個例子,我該如何解決這個問題,或者可能會提出一些不同的方法。鑑於向量存儲在字典中並且公式是字符串輸入。
我也可以在任何其他容器中存儲變量。問題是我不知道變量和公式在執行代碼之前的名稱(它們是由用戶提供的)。
此外,我認爲遍歷矢量中的每個元素可能會慢,因爲python for循環很慢。
我接受你的答案,由於它速度更快,這是偉大的束。謝謝 – 2014-09-13 19:13:17