用sympy 求偏导 import numpy as np import pandas as pd import sympy as sy theta, n, k = sy.symbols('theta, n, k') z = theta+n+k # print('z :{}'.format(z)) # result = z.subs({theta: 0, n: 1}) # 用数值分别对x、y进行替换 # print(result) # dx = sy.diff(z, theta) # 对x求偏导 # print(dx) # result = dx.subs({theta: 0, n: 2, k: 1}) # print(result) # dy = sy.diff(z, n) # 对y求偏导 # print(dy) # result = dy.subs({theta: 0, n: 2, k: 1}) # print(result) dz = sy.diff(z, k) # 对y求偏导 print(dz) theta_set = [0, 0.7854, 1.5708, 2.3561, 3.1415] n_set = [0, 0.5, 1, 2, 3, 8] k_set = [1, 2, 3, 10] result = np.zeros([len(k_set), len(n_set), len(theta_set)]) for k1 in k_set: for n1 in n_set: for theta1 in theta_set: # save = dz.subs({theta: theta1, n: n1, k: k1}) # save = dx.subs({theta: theta1, n: n1, k: k1}) save = dy.subs({theta: theta1, n: n1, k: k1}) result[k_set.index(k1)][n_set.index(n1)][theta_set.index(theta1)] = save for i in range(len(k_set)): df = pd.DataFrame(result[i]) df.to_csv('result.csv', mode='a') # result = dz.subs({theta: 3.14, n: 1, k: 1}) # print(result)