0

我正在研究 Hans Petter Langtangen 的《A Primer on Scientific Programming with Python 2nd》一书。这本书使用python2,但我在python3中应用它。scotools.std 库在书中被广泛使用,但我无法在 python3 中导入或安装它。是否有适用于 python3 的 scitools.std 的替代品?(这可能会解决我看书的困难。)

特别是在这个问题中,我正在寻找 Easyviz 的替代方案,因为我无法通过根据问题中的需要修改参数 s 来制作具有高斯函数图的电影。

书中呈现的python2代码为:

from scitools.std import *
import time

def f(x, m, s):
    return (1.0/(sqrt(2*pi)*s))*exp(-0.5*((x-m)/s)**2)

m = 0
s_start = 2
s_stop = 0.2
s_values = linspace(s_start,s_stop, 30)
x = linspace(m - 3*s_start, m + 3*s_start, 1000)
# f is max for x=m; smaller s gives larger max value
max_f = f(m, m s_stop)

# Show the movie on the screen
# and make hardcopies of frames simultaneously.

counter = 0
for s in s_values:
    y = f(x, m, s)
    plot(x, y, axis=[x[0], x[-1], -0.1, max_f],
         xlabel='x', ylabel='f', legend='s=%4.2f' % s,
         savefig='tmp%04d.png' % counter)
    counter += 1
    #time.sleep(0.2)

# Make movie file the simplest possible way:
movie('tmp*.png')

我在 python3 中的不完整版本是:

import time
import numpy as np
import matplotlib.pyplot as plt

def f(x, m, s):
    return (1.0/(np.sqrt(2*np.pi)*s))*np.exp(-0.5*((x-m)/s)**2)

m = 0
s_start = 2
s_stop = 0.2
s_values = np.linspace(s_start, s_stop, 30)
x = np.linspace(m - 3*s_start, m + 3*s_start, 1000)
# f is max for x=m; smaller s gives larger max value
max_f = f(m, m, s_stop)

# Show the movie on the screen
# and make hardcopies of frames simultaneosly.

counter = 0
for s in s_values:
    y = f(x, m, s)
    plt.plot(x, y)
    plt.xlim(x[0], x[-1])
    plt.ylim(-0.1, max_f + 0.1)
    plt.xlabel('x')
    plt.ylabel('f')
    plt.legend('s=%4.2f' % s)
    plt.savefig('tmp%04d.png' % counter)
    counter += 1
    #time.sleep(0.2)
    plt.show()

这会正确生成 30 张图像,但不会继续生成电影。*请注意,我使用 plt.show () 并且必须关闭 30 个窗口,如果我不使用每个生成的文件,它会在同一张图中显示累积曲线。

所以我看到了三种方法来解决我的问题:

1)能够正确安装和导入 scitools.std (这将是极好的,因为问题贯穿整本书!);

2) 获得 scitools.std 和 Easyviz 模块的替代方案;

3)按照我在不完整的代码版本中采用的路径,即用在我的代码中运行良好的东西替换书中提供的命令电影('tmp * .png')。

4

1 回答 1

0

是的,有一个名为 scitools3 的模块。

您可以通过以下方式安装: pip install scitools3

并重新启动您的 PC。

阅读更多https://pypi.org/project/scitools3/

/玛莎

于 2020-04-27T03:30:57.533 回答