numpy 症状故障排除:+不支持的操作数类型:'ImmutableDenseNDimArray'和'NegativeOne'

rqqzpn5f  于 2023-04-30  发布在  其他
关注(0)|答案(1)|浏览(105)

我试图确定吸附的氢气的熵,使用sympy库将温度“T”作为Python中的符号变量,结果遇到了问题
最初,这个过程是以数字方式完成的,这需要我使用numpy来创建一个浮点数列表。当我后来决定让温度成为一个变量,而不是一个固定值时,我使用了sympy来实现这一点。结果我得到了以下错误,与我在指数中使用负数有关。任何建议将不胜感激。参见以下代码:

import numpy as np
import sympy as sym

c = 3e8
h = 6.626e-34
k = 1.38e-23

T = sym.symbols('T')

v = np.array([3034.1, 3027, 1265.8, 1257.5, 840.6, 642.7])
f=v*c*100

Q = sym.exp(-(h * f)/(2 * k * T))/(1 - (sym.exp(-(h * f))/(k * T)))
print(Q)
7uhlpewt

7uhlpewt1#

在混合使用numpy和sympy时,你需要清楚在哪里使用numpy数组,在哪里使用符号表达式。下面是一些代码,可以做到这一点:

import numpy as np
import sympy as sym

c = 3e8
h = 6.626e-34
k = 1.38e-23

T = sym.symbols('T')

# We will substitute values from v_arr in place of v_sym
v_sym = sym.symbols('v')
v_arr = np.array([3034.1, 3027, 1265.8, 1257.5, 840.6, 642.7])

# Make a symbolic expression involving v_sym:
f = v_sym*c*100
Q = sym.exp(-(h * f)/(2 * k * T))/(1 - (sym.exp(-(h * f))/(k * T)))

# Substitute values from the numpy array into the symbolic expression:
Q_arr = [Q.subs(v_sym, v_val) for v_val in v_arr]

print(Q_arr)

理解代码的人会立即发现一些东西:在这里使用numpy绝对没有任何好处,v_arr也可能是一个列表。你也可以使用sympy矩阵代替numpy数组,但至少对于所示的代码来说,它没有提供任何特别的好处。

相关问题