Skip to content

Commit ea59f11

Browse files
committed
update
1 parent 16cae13 commit ea59f11

20 files changed

+47
-47
lines changed

build/doctrees/environment.pickle

0 Bytes
Binary file not shown.

build/doctrees/目录/ch1.doctree

16 Bytes
Binary file not shown.

build/doctrees/目录/ch10.doctree

0 Bytes
Binary file not shown.

build/doctrees/目录/ch2.doctree

427 Bytes
Binary file not shown.

build/doctrees/目录/ch4.doctree

0 Bytes
Binary file not shown.

build/doctrees/目录/ch8.doctree

0 Bytes
Binary file not shown.

build/doctrees/目录/ch9.doctree

0 Bytes
Binary file not shown.
22 Bytes
Binary file not shown.

build/html/_sources/目录/ch1.rst.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,7 @@ Ex1:利用列表推导式写矩阵乘法
527527
for k in range(M1.shape[1]):
528528
item += M1[i][k] * M2[k][j]
529529
res[i][j] = item
530-
((M1@M2 - res) < 1e-15).all() # 排除数值误差
530+
(np.abs((M1@M2 - res) < 1e-15)).all() # 排除数值误差
531531
532532
请将其改写为列表推导式的形式。
533533

build/html/_sources/目录/ch2.rst.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import numpy as np
88
import pandas as pd
99
10-
在开始学习前,请保证 ``pandas`` 的版本号不低于如下所示的版本,否则请务必升级!
10+
在开始学习前,请保证 ``pandas`` 的版本号不低于如下所示的版本,否则请务必升级!请确认已经安装了 ``xlrd, xlwt, openpyxl`` 这三个包,其中xlrd版本不得高于 ``2.0.0`` 。
1111

1212
.. ipython:: python
1313
@@ -309,7 +309,7 @@
309309
s_condition= pd.Series([True,False,False,True],index=s.index)
310310
s.mask(s_condition, -50)
311311
312-
数值替换包含了 ``round, abs, clip`` 方法,它们分别表示取整、取绝对值和截断:
312+
数值替换包含了 ``round, abs, clip`` 方法,它们分别表示按照给定精度四舍五入、取绝对值和截断:
313313

314314
.. ipython:: python
315315
@@ -342,7 +342,7 @@
342342
df_demo.sort_values('Height').head()
343343
df_demo.sort_values('Height', ascending=False).head()
344344
345-
在排序中,进场遇到多列排序的问题,比如在体重相同的情况下,对身高进行排序,并且保持身高降序排列,体重升序排列:
345+
在排序中,经常遇到多列排序的问题,比如在体重相同的情况下,对身高进行排序,并且保持身高降序排列,体重升序排列:
346346

347347
.. ipython:: python
348348
@@ -460,7 +460,7 @@
460460
.. admonition:: 练一练
461461
:class: hint
462462

463-
``rolling`` 对象的默认窗口方向都是向前的,某些情况下用户需要向后的窗口,例如对1,2,3设定向后窗口为2的 ``sum`` 操作,结果为3,5,NaN,此时应该如何实现向后的滑窗操作?(提示:使用 ``shift`` )
463+
``rolling`` 对象的默认窗口方向都是向前的,某些情况下用户需要向后的窗口,例如对1,2,3设定向后窗口为2的 ``sum`` 操作,结果为3,5,NaN,此时应该如何实现向后的滑窗操作?
464464

465465
2. 扩张窗口
466466
-------------
@@ -523,7 +523,7 @@ Ex2:指数加权窗口
523523
y_t &=\frac{\sum_{i=0}^{t} w_i x_{t-i}}{\sum_{i=0}^{t} w_i} \\
524524
&=\frac{x_t + (1 - \alpha)x_{t-1} + (1 - \alpha)^2 x_{t-2} + ...
525525
+ (1 - \alpha)^{t} x_{0}}{1 + (1 - \alpha) + (1 - \alpha)^2 + ...
526-
+ (1 - \alpha)^{t-1}}\\
526+
+ (1 - \alpha)^{t}}\\
527527
528528
对于 ``Series`` 而言,可以用 ``ewm`` 对象如下计算指数平滑后的序列:
529529

@@ -538,4 +538,4 @@ Ex2:指数加权窗口
538538

539539
2. 作为滑动窗口的 ``ewm`` 窗口
540540

541-
从第1问中可以看到, ``ewm`` 作为一种扩张窗口的特例,只能从序列的第一个元素开始加权。现在希望给定一个限制窗口 ``n`` ,只对包含自身最近的 ``n`` 个窗口进行滑动加权平滑。请根据滑窗函数,给出新的 :math:`w_i` 与 :math:`y_t` 的更新公式,并通过 ``rolling`` 窗口实现这一功能。
541+
从第1问中可以看到, ``ewm`` 作为一种扩张窗口的特例,只能从序列的第一个元素开始加权。现在希望给定一个限制窗口 ``n`` ,只对包含自身的最近的 ``n`` 个元素作为窗口进行滑动加权平滑。请根据滑窗函数,给出新的 :math:`w_i` 与 :math:`y_t` 的更新公式,并通过 ``rolling`` 窗口实现这一功能。

build/html/_sources/目录/参考答案.rst.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Ex1:利用列表推导式写矩阵乘法
1919
M1 = np.random.rand(2,3)
2020
M2 = np.random.rand(3,4)
2121
res = [[sum([M1[i][k] * M2[k][j] for k in range(M1.shape[1])]) for j in range(M2.shape[1])] for i in range(M1.shape[0])]
22-
((M1@M2 - res) < 1e-15).all()
22+
(np.abs((M1@M2 - res) < 1e-15)).all()
2323
2424
Ex2:更新矩阵
2525
------------------

build/html/searchindex.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/html/目录/ch1.html

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -503,74 +503,74 @@ <h3>1. np数组的构造<a class="headerlink" href="#np" title="Permalink to thi
503503
<p>【c】随机矩阵: <code class="docutils literal notranslate"><span class="pre">np.random</span></code></p>
504504
<p>最常用的随机生成函数为 <code class="docutils literal notranslate"><span class="pre">rand,</span> <span class="pre">randn,</span> <span class="pre">randint,</span> <span class="pre">choice</span></code> ,它们分别表示0-1均匀分布的随机数组、标准正态的随机数组、随机整数组和随机列表抽样:</p>
505505
<div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="gp">In [38]: </span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">rand</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># 生成服从0-1均匀分布的三个随机数</span>
506-
<span class="gh">Out[38]: </span><span class="go">array([0.0970329 , 0.78218819, 0.80915411])</span>
506+
<span class="gh">Out[38]: </span><span class="go">array([0.70286261, 0.16963837, 0.56005106])</span>
507507

508508
<span class="gp">In [39]: </span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">rand</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span> <span class="c1"># 注意这里传入的不是元组,每个维度大小分开输入</span>
509509
<span class="gh">Out[39]: </span><span class="go"></span>
510-
<span class="go">array([[0.91979261, 0.93343402, 0.95961353],</span>
511-
<span class="go"> [0.64105544, 0.4278274 , 0.2314544 ],</span>
512-
<span class="go"> [0.55372669, 0.09001703, 0.52105555]])</span>
510+
<span class="go">array([[0.10643401, 0.97403626, 0.63344678],</span>
511+
<span class="go"> [0.66536365, 0.23873862, 0.38589388],</span>
512+
<span class="go"> [0.32450925, 0.84379175, 0.50644027]])</span>
513513
</pre></div>
514514
</div>
515515
<p>对于服从区间 <span class="math notranslate nohighlight">\(a\)</span><span class="math notranslate nohighlight">\(b\)</span> 上的均匀分布可以如下生成:</p>
516516
<div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="gp">In [40]: </span><span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">15</span>
517517

518518
<span class="gp">In [41]: </span><span class="p">(</span><span class="n">b</span> <span class="o">-</span> <span class="n">a</span><span class="p">)</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">rand</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="o">+</span> <span class="n">a</span>
519-
<span class="gh">Out[41]: </span><span class="go">array([14.7925822 , 12.40640853, 13.64735642])</span>
519+
<span class="gh">Out[41]: </span><span class="go">array([7.58056042, 5.19864132, 6.34440414])</span>
520520
</pre></div>
521521
</div>
522522
<p>一般的,可以选择已有的库函数:</p>
523523
<div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="gp">In [42]: </span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">uniform</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">15</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
524-
<span class="gh">Out[42]: </span><span class="go">array([14.49000992, 14.13426099, 10.59748409])</span>
524+
<span class="gh">Out[42]: </span><span class="go">array([14.38239745, 9.85351137, 14.81961037])</span>
525525
</pre></div>
526526
</div>
527527
<p><code class="docutils literal notranslate"><span class="pre">randn</span></code> 生成了 <span class="math notranslate nohighlight">\(N\rm{(\mathbf{0}, \mathbf{I})}\)</span> 的标准正态分布:</p>
528528
<div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="gp">In [43]: </span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randn</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
529-
<span class="gh">Out[43]: </span><span class="go">array([ 0.09020051, -0.49427186, 0.53414346])</span>
529+
<span class="gh">Out[43]: </span><span class="go">array([ 1.14531973, -0.09760709, 0.75457507])</span>
530530

531531
<span class="gp">In [44]: </span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randn</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
532532
<span class="gh">Out[44]: </span><span class="go"></span>
533-
<span class="go">array([[ 0.74006588, -0.67919954],</span>
534-
<span class="go"> [ 0.12482395, -0.39503791]])</span>
533+
<span class="go">array([[-2.5879568 , -0.08810583],</span>
534+
<span class="go"> [-1.52652138, 0.74351561]])</span>
535535
</pre></div>
536536
</div>
537537
<p>对于服从方差为 <span class="math notranslate nohighlight">\(\sigma^2\)</span> 均值为 <span class="math notranslate nohighlight">\(\mu\)</span> 的一元正态分布可以如下生成:</p>
538538
<div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="gp">In [45]: </span><span class="n">sigma</span><span class="p">,</span> <span class="n">mu</span> <span class="o">=</span> <span class="mf">2.5</span><span class="p">,</span> <span class="mi">3</span>
539539

540540
<span class="gp">In [46]: </span><span class="n">mu</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randn</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="o">*</span> <span class="n">sigma</span>
541-
<span class="gh">Out[46]: </span><span class="go">array([1.34482392, 0.51425021, 0.0469956 ])</span>
541+
<span class="gh">Out[46]: </span><span class="go">array([-0.34486892, 7.77967389, 2.7578818 ])</span>
542542
</pre></div>
543543
</div>
544544
<p>同样的,也可选择从已有函数生成:</p>
545545
<div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="gp">In [47]: </span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">normal</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mf">2.5</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
546-
<span class="gh">Out[47]: </span><span class="go">array([5.86609241, 1.93924509, 1.52220957])</span>
546+
<span class="gh">Out[47]: </span><span class="go">array([5.89785395, 4.75559493, 3.90674484])</span>
547547
</pre></div>
548548
</div>
549549
<p><code class="docutils literal notranslate"><span class="pre">randint</span></code> 可以指定生成随机整数的最小值最大值(不包含)和维度大小:</p>
550550
<div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="gp">In [48]: </span><span class="n">low</span><span class="p">,</span> <span class="n">high</span><span class="p">,</span> <span class="n">size</span> <span class="o">=</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">15</span><span class="p">,</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span> <span class="c1"># 生成5到14的随机整数</span>
551551

552552
<span class="gp">In [49]: </span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="n">low</span><span class="p">,</span> <span class="n">high</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
553553
<span class="gh">Out[49]: </span><span class="go"></span>
554-
<span class="go">array([[11, 6],</span>
555-
<span class="go"> [ 8, 8]])</span>
554+
<span class="go">array([[ 8, 11],</span>
555+
<span class="go"> [ 8, 11]])</span>
556556
</pre></div>
557557
</div>
558558
<p><code class="docutils literal notranslate"><span class="pre">choice</span></code> 可以从给定的列表中,以一定概率和方式抽取结果,当不指定概率时为均匀采样,默认抽取方式为有放回抽样:</p>
559559
<div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="gp">In [50]: </span><span class="n">my_list</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;a&#39;</span><span class="p">,</span> <span class="s1">&#39;b&#39;</span><span class="p">,</span> <span class="s1">&#39;c&#39;</span><span class="p">,</span> <span class="s1">&#39;d&#39;</span><span class="p">]</span>
560560

561561
<span class="gp">In [51]: </span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">my_list</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">replace</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">p</span><span class="o">=</span><span class="p">[</span><span class="mf">0.1</span><span class="p">,</span> <span class="mf">0.7</span><span class="p">,</span> <span class="mf">0.1</span> <span class="p">,</span><span class="mf">0.1</span><span class="p">])</span>
562-
<span class="gh">Out[51]: </span><span class="go">array([&#39;b&#39;, &#39;d&#39;], dtype=&#39;&lt;U1&#39;)</span>
562+
<span class="gh">Out[51]: </span><span class="go">array([&#39;b&#39;, &#39;a&#39;], dtype=&#39;&lt;U1&#39;)</span>
563563

564564
<span class="gp">In [52]: </span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">my_list</span><span class="p">,</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">))</span>
565565
<span class="gh">Out[52]: </span><span class="go"></span>
566-
<span class="go">array([[&#39;d&#39;, &#39;b&#39;, &#39;a&#39;],</span>
567-
<span class="go"> [&#39;c&#39;, &#39;d&#39;, &#39;c&#39;],</span>
568-
<span class="go"> [&#39;b&#39;, &#39;c&#39;, &#39;c&#39;]], dtype=&#39;&lt;U1&#39;)</span>
566+
<span class="go">array([[&#39;d&#39;, &#39;a&#39;, &#39;c&#39;],</span>
567+
<span class="go"> [&#39;a&#39;, &#39;c&#39;, &#39;c&#39;],</span>
568+
<span class="go"> [&#39;b&#39;, &#39;d&#39;, &#39;c&#39;]], dtype=&#39;&lt;U1&#39;)</span>
569569
</pre></div>
570570
</div>
571571
<p>当返回的元素个数与原列表相同时,不放回抽样等价于使用 <code class="docutils literal notranslate"><span class="pre">permutation</span></code> 函数,即打散原列表:</p>
572572
<div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="gp">In [53]: </span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">permutation</span><span class="p">(</span><span class="n">my_list</span><span class="p">)</span>
573-
<span class="gh">Out[53]: </span><span class="go">array([&#39;d&#39;, &#39;b&#39;, &#39;a&#39;, &#39;c&#39;], dtype=&#39;&lt;U1&#39;)</span>
573+
<span class="gh">Out[53]: </span><span class="go">array([&#39;d&#39;, &#39;c&#39;, &#39;a&#39;, &#39;b&#39;], dtype=&#39;&lt;U1&#39;)</span>
574574
</pre></div>
575575
</div>
576576
<p>最后,需要提到的是随机种子,它能够固定随机数的输出结果:</p>
@@ -1046,7 +1046,7 @@ <h3>Ex1:利用列表推导式写矩阵乘法<a class="headerlink" href="#ex1"
10461046
<span class="gp"> .....: </span> <span class="n">res</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">item</span>
10471047
<span class="gp"> .....: </span>
10481048

1049-
<span class="gp">In [144]: </span><span class="p">((</span><span class="n">M1</span><span class="nd">@M2</span> <span class="o">-</span> <span class="n">res</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mf">1e-15</span><span class="p">)</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> <span class="c1"># 排除数值误差</span>
1049+
<span class="gp">In [144]: </span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">((</span><span class="n">M1</span><span class="nd">@M2</span> <span class="o">-</span> <span class="n">res</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mf">1e-15</span><span class="p">))</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> <span class="c1"># 排除数值误差</span>
10501050
<span class="gh">Out[144]: </span><span class="go">True</span>
10511051
</pre></div>
10521052
</div>

build/html/目录/ch10.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,19 +1009,19 @@ <h3>1. 滑动窗口<a class="headerlink" href="#id10" title="Permalink to this h
10091009
<span class="gp">In [107]: </span><span class="n">r</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">rolling</span><span class="p">(</span><span class="s1">&#39;30D&#39;</span><span class="p">)</span>
10101010

10111011
<span class="gp">In [108]: </span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
1012-
<span class="gh">Out[108]: </span><span class="go">[&lt;matplotlib.lines.Line2D at 0x2dfcd24c988&gt;]</span>
1012+
<span class="gh">Out[108]: </span><span class="go">[&lt;matplotlib.lines.Line2D at 0x15d3c0c3708&gt;]</span>
10131013

10141014
<span class="gp">In [109]: </span><span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">&#39;BOLL LINES&#39;</span><span class="p">)</span>
10151015
<span class="gh">Out[109]: </span><span class="go">Text(0.5, 1.0, &#39;BOLL LINES&#39;)</span>
10161016

10171017
<span class="gp">In [110]: </span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">r</span><span class="o">.</span><span class="n">mean</span><span class="p">())</span>
1018-
<span class="gh">Out[110]: </span><span class="go">[&lt;matplotlib.lines.Line2D at 0x2dfcd2c1848&gt;]</span>
1018+
<span class="gh">Out[110]: </span><span class="go">[&lt;matplotlib.lines.Line2D at 0x15d3be17ac8&gt;]</span>
10191019

10201020
<span class="gp">In [111]: </span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">r</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span><span class="o">+</span><span class="n">r</span><span class="o">.</span><span class="n">std</span><span class="p">()</span><span class="o">*</span><span class="mi">2</span><span class="p">)</span>
1021-
<span class="gh">Out[111]: </span><span class="go">[&lt;matplotlib.lines.Line2D at 0x2dfcd334bc8&gt;]</span>
1021+
<span class="gh">Out[111]: </span><span class="go">[&lt;matplotlib.lines.Line2D at 0x15d3c06d0c8&gt;]</span>
10221022

10231023
<span class="gp">In [112]: </span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">r</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span><span class="o">-</span><span class="n">r</span><span class="o">.</span><span class="n">std</span><span class="p">()</span><span class="o">*</span><span class="mi">2</span><span class="p">)</span>
1024-
<span class="gh">Out[112]: </span><span class="go">[&lt;matplotlib.lines.Line2D at 0x2dfcd388608&gt;]</span>
1024+
<span class="gh">Out[112]: </span><span class="go">[&lt;matplotlib.lines.Line2D at 0x15d3c06d348&gt;]</span>
10251025
</pre></div>
10261026
</div>
10271027
<a class="reference internal image-reference" href="../_images/ch10.png"><img alt="../_images/ch10.png" src="../_images/ch10.png" style="width: 400px;" /></a>

0 commit comments

Comments
 (0)