我在python 3.7
中有这些代码行,但是当我要编译它们时,出现一些错误,意味着新版本的python库无法识别以前的版本库。我进行了搜索,但完全没有python说special.sph_jnyn
已弃用并删除为:
https://docs.scipy.org/doc/scipy/reference/release.0.18.0.html#deprecated-features
https://docs.scipy.org/doc/scipy/reference/release.1.0.0.html#backwards-incompatible-changes
已编辑#2
代码如下:
...
Rad = [0, {}, {}]
Radd = [0, {}, {}]
kis = [0, bnd.k1, bnd.k2]
for i in [1, 2]:
krs = kis[i] * r
JY = array([special.sph_jnyn(self.n, kr) for kr in krs])[:, :, :]
Rad[i] = {'j': JY[:, 0, :], 'h': JY[:, 0, :] + 1j * JY[:, 2, :]}
Radd[i] = {'j': JY[:, 1, :], 'h': JY[:, 1, :] + 1j * JY[:, 3, :]}
…
def Rad(self, m, ij, i):
return self.data_layers[self._lay]['Rad'][i][ij][:, m:]
def Radd(self, m, ij, i):
return self.data_layers[self._lay]['Radd'][i][ij][:, m:]
…
def get_Jn(n, x):
return array([special.sph_jn(n, xl) for xl in x])
def get_JnHn(n, x):
JnYn = array([special.sph_jnyn(n, xl) for xl in x])
return JnYn[:, :2, :], JnYn[:, :2, :] + 1j * JnYn[:, 2:, :]
...
,错误是
模块'scipy.special'没有属性'sph_jnyn'
因此,我们将不胜感激。
编辑#3:
我不确定是否可以解决问题,但答案是这样的:
某些代码如下:
for i in [1, 2]:
krs = kis[i] * r
JY = array([[((special.spherical_jn(self.n, kr)),(special.spherical_jn(self.n, kr,1) ),(special.spherical_yn(self.n, kr) ),(special.spherical_yn(self.n, kr,1)) ) for kr in krs],])[:,:,:]
print("+++++++++++++++++++++++")
print (JY.shape)
print (JY)
print (self.n)
print("+++++++++++++++++++++++")
Rad[i] = {'j': JY[:, :, 0], 'h': JY[:, :, 0] + 1j * JY[:, :,2]}
Radd[i] = {'j': JY[:, :, 1], 'h': JY[:, :, 1] + 1j * JY[:, :, 3]}
print (Rad[i])
print (Radd[i])
所以输出是:
+++++++++++++++++++++++
(1, 1, 4)
[[[ 0.04816103 0.10417659 -5.16810074 16.02904971]]]
2
+++++++++++++++++++++++
{'j': array([[0.04816103]]), 'h': array([[0.04816103-5.16810074j]])}
{'j': array([[0.10417659]]), 'h': array([[0.10417659+16.02904971j]])}
+++++++++++++++++++++++
(1, 1, 4)
[[[ 0.08151801+0.00775045j 0.12687981+0.00386415j
-2.42490018+0.31887469j 5.12230738-1.05692606j]]]
2
+++++++++++++++++++++++
{'j': array([[0.08151801+0.00775045j]]), 'h': array([[-0.23735668-2.41714974j]])}
{'j': array([[0.12687981+0.00386415j]]), 'h': array([[1.18380587+5.12617153j]])}