<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>第 4 章：向量化运算（Vectorized Operations） on 跟我学机器学习</title><link>https://machinelearningwithme.com/course/numpy/chapter04/</link><description>Recent content in 第 4 章：向量化运算（Vectorized Operations） on 跟我学机器学习</description><generator>Hugo</generator><language>zh_CN</language><lastBuildDate>Sun, 25 Oct 2026 22:24:17 +0800</lastBuildDate><atom:link href="https://machinelearningwithme.com/course/numpy/chapter04/index.xml" rel="self" type="application/rss+xml"/><item><title>NumPy 向量化运算详解：归一化差值、角度特征、聚合统计、排序与范数门控 | NumPy 数组计算实战</title><link>https://machinelearningwithme.com/course/numpy/chapter04/core-concepts/</link><pubDate>Sun, 25 Oct 2026 09:30:00 +0800</pubDate><guid>https://machinelearningwithme.com/course/numpy/chapter04/core-concepts/</guid><description>&lt;h1 id="第-41-节-核心知识点"&gt;第 4.1 节 核心知识点&lt;a class="anchor" href="#%e7%ac%ac-41-%e8%8a%82-%e6%a0%b8%e5%bf%83%e7%9f%a5%e8%af%86%e7%82%b9"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint note'&gt;
&lt;p&gt;&lt;strong&gt;预计学习时长：&lt;/strong&gt; 45 分钟&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;本节目标：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;说得清&lt;strong&gt;为什么&lt;/strong&gt;数组运算比 for 循环快；&lt;/li&gt;
&lt;li&gt;会把「for 循环 + if 判断」翻译成&lt;strong&gt;一行数组表达式&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;会算&lt;strong&gt;归一化差值&lt;/strong&gt;、用 &lt;code&gt;np.arctan2()&lt;/code&gt; 构造&lt;strong&gt;角度特征&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;熟练使用 &lt;code&gt;sum&lt;/code&gt; / &lt;code&gt;mean&lt;/code&gt; / &lt;code&gt;max&lt;/code&gt; / &lt;code&gt;min&lt;/code&gt; 和它们的 &lt;strong&gt;&lt;code&gt;axis&lt;/code&gt; 参数&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;分得清 &lt;strong&gt;&lt;code&gt;sort()&lt;/code&gt;&lt;/strong&gt; 和 &lt;strong&gt;&lt;code&gt;argsort()&lt;/code&gt;&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;会用 &lt;code&gt;np.linalg.norm()&lt;/code&gt; 算&lt;strong&gt;向量长度&lt;/strong&gt;，并用它做&lt;strong&gt;条件变换&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;&lt;h2 id="先搞清楚向量化到底快在哪"&gt;先搞清楚：向量化到底快在哪&lt;a class="anchor" href="#%e5%85%88%e6%90%9e%e6%b8%85%e6%a5%9a%e5%90%91%e9%87%8f%e5%8c%96%e5%88%b0%e5%ba%95%e5%bf%ab%e5%9c%a8%e5%93%aa"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;一句话：NumPy 把循环搬到了底层 C 代码里，还把数据打包成一块连续内存批量处理。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Python 的循环是这样的：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;prices &lt;span style="color:#666"&gt;=&lt;/span&gt; [&lt;span style="color:#40a070"&gt;100.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;200.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;300.0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;for&lt;/span&gt; i &lt;span style="color:#007020;font-weight:bold"&gt;in&lt;/span&gt; &lt;span style="color:#007020"&gt;range&lt;/span&gt;(&lt;span style="color:#007020"&gt;len&lt;/span&gt;(prices)):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; prices[i] &lt;span style="color:#666"&gt;=&lt;/span&gt; prices[i] &lt;span style="color:#666"&gt;*&lt;/span&gt; &lt;span style="color:#40a070"&gt;0.8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;每一步都要做三件事&lt;/strong&gt;：从列表里取出元素 → 调用乘方 → 再塞回列表。
而且列表里的每个数字都是&lt;strong&gt;独立的 Python 对象&lt;/strong&gt;，散落在内存各处，CPU 缓存根本用不上。&lt;/p&gt;
&lt;p&gt;NumPy 的写法：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;import&lt;/span&gt; &lt;span style="color:#0e84b5;font-weight:bold"&gt;numpy&lt;/span&gt; &lt;span style="color:#007020;font-weight:bold"&gt;as&lt;/span&gt; &lt;span style="color:#0e84b5;font-weight:bold"&gt;np&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;prices &lt;span style="color:#666"&gt;=&lt;/span&gt; np&lt;span style="color:#666"&gt;.&lt;/span&gt;array([&lt;span style="color:#40a070"&gt;100.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;200.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;300.0&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;prices &lt;span style="color:#666"&gt;=&lt;/span&gt; prices &lt;span style="color:#666"&gt;*&lt;/span&gt; &lt;span style="color:#40a070"&gt;0.8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;一次都不循环。&lt;/strong&gt; 底层做的是：把 3 个 &lt;code&gt;double&lt;/code&gt; 打包在连续的 24 字节内存里 → 交给 C 层的 SIMD 指令 → &lt;strong&gt;一次算 4 个（甚至 8 个）&lt;/strong&gt;。&lt;/p&gt;</description></item><item><title>NumPy 编程练习：5 道动手题学会向量化运算（归一化差值、角度特征、聚合统计、排序、范数门控） | NumPy 数组计算实战</title><link>https://machinelearningwithme.com/course/numpy/chapter04/coding-exercises/</link><pubDate>Sun, 25 Oct 2026 09:30:00 +0800</pubDate><guid>https://machinelearningwithme.com/course/numpy/chapter04/coding-exercises/</guid><description>&lt;h1 id="第-42-节-编程练习"&gt;第 4.2 节 编程练习&lt;a class="anchor" href="#%e7%ac%ac-42-%e8%8a%82-%e7%bc%96%e7%a8%8b%e7%bb%83%e4%b9%a0"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint note'&gt;
&lt;p&gt;&lt;strong&gt;预计学习时长：&lt;/strong&gt; 45 分钟&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;练习方式：&lt;/strong&gt; 新建一个 Jupyter Notebook，把下面的数据抄进去，然后&lt;strong&gt;每题独立完成&lt;/strong&gt;。第 5 题最难，多花点时间。&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id="准备先把数据建好"&gt;准备：先把数据建好&lt;a class="anchor" href="#%e5%87%86%e5%a4%87%e5%85%88%e6%8a%8a%e6%95%b0%e6%8d%ae%e5%bb%ba%e5%a5%bd"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;import&lt;/span&gt; &lt;span style="color:#0e84b5;font-weight:bold"&gt;numpy&lt;/span&gt; &lt;span style="color:#007020;font-weight:bold"&gt;as&lt;/span&gt; &lt;span style="color:#0e84b5;font-weight:bold"&gt;np&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sales &lt;span style="color:#666"&gt;=&lt;/span&gt; np&lt;span style="color:#666"&gt;.&lt;/span&gt;array([
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#40a070"&gt;120.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;135.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;150.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;165.0&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [ &lt;span style="color:#40a070"&gt;80.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;92.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;88.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;105.0&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#40a070"&gt;200.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;210.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;195.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;230.0&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [ &lt;span style="color:#40a070"&gt;60.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;72.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;85.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;78.0&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#40a070"&gt;150.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;145.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;160.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;175.0&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;city_names &lt;span style="color:#666"&gt;=&lt;/span&gt; np&lt;span style="color:#666"&gt;.&lt;/span&gt;array([&lt;span style="color:#4070a0"&gt;&amp;#34;北京&amp;#34;&lt;/span&gt;, &lt;span style="color:#4070a0"&gt;&amp;#34;上海&amp;#34;&lt;/span&gt;, &lt;span style="color:#4070a0"&gt;&amp;#34;广州&amp;#34;&lt;/span&gt;, &lt;span style="color:#4070a0"&gt;&amp;#34;深圳&amp;#34;&lt;/span&gt;, &lt;span style="color:#4070a0"&gt;&amp;#34;成都&amp;#34;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;quarter_names &lt;span style="color:#666"&gt;=&lt;/span&gt; np&lt;span style="color:#666"&gt;.&lt;/span&gt;array([&lt;span style="color:#4070a0"&gt;&amp;#34;Q1&amp;#34;&lt;/span&gt;, &lt;span style="color:#4070a0"&gt;&amp;#34;Q2&amp;#34;&lt;/span&gt;, &lt;span style="color:#4070a0"&gt;&amp;#34;Q3&amp;#34;&lt;/span&gt;, &lt;span style="color:#4070a0"&gt;&amp;#34;Q4&amp;#34;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;a &lt;span style="color:#666"&gt;=&lt;/span&gt; np&lt;span style="color:#666"&gt;.&lt;/span&gt;array([&lt;span style="color:#40a070"&gt;120.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;80.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;200.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;60.0&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;b &lt;span style="color:#666"&gt;=&lt;/span&gt; np&lt;span style="color:#666"&gt;.&lt;/span&gt;array([&lt;span style="color:#40a070"&gt;100.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;90.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;150.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;55.0&lt;/span&gt;])&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="练习-1计算两个数组之间的归一化差值"&gt;练习 1：计算两个数组之间的归一化差值&lt;a class="anchor" href="#%e7%bb%83%e4%b9%a0-1%e8%ae%a1%e7%ae%97%e4%b8%a4%e4%b8%aa%e6%95%b0%e7%bb%84%e4%b9%8b%e9%97%b4%e7%9a%84%e5%bd%92%e4%b8%80%e5%8c%96%e5%b7%ae%e5%80%bc"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;题目：&lt;/strong&gt; 完成下面 4 个任务：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;算出 &lt;code&gt;a&lt;/code&gt; 和 &lt;code&gt;b&lt;/code&gt; 的&lt;strong&gt;归一化差值&lt;/strong&gt;：&lt;code&gt;(a - b) / (|a| + |b|)&lt;/code&gt;，存到 &lt;code&gt;norm_diff&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;打印 &lt;code&gt;norm_diff&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;用&lt;strong&gt;安全版&lt;/strong&gt;（分母加 &lt;code&gt;1e-9&lt;/code&gt;）再算一次，存到 &lt;code&gt;safe_diff&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;找出&lt;strong&gt;差距最大&lt;/strong&gt;的那一对下标（用 &lt;code&gt;np.argmax&lt;/code&gt;），打印出来。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;思考题：&lt;/strong&gt; 第 3 题加 &lt;code&gt;1e-9&lt;/code&gt; 之后，结果和第 2 题有区别吗？为什么还要加？&lt;/p&gt;</description></item><item><title>NumPy 常见问题答疑：10 个向量化运算的疑问（循环对比、axis、sort 与 argsort、范数门控） | NumPy 数组计算实战</title><link>https://machinelearningwithme.com/course/numpy/chapter04/faq/</link><pubDate>Sun, 25 Oct 2026 09:30:00 +0800</pubDate><guid>https://machinelearningwithme.com/course/numpy/chapter04/faq/</guid><description>&lt;h1 id="第-43-节-常见问题"&gt;第 4.3 节 常见问题&lt;a class="anchor" href="#%e7%ac%ac-43-%e8%8a%82-%e5%b8%b8%e8%a7%81%e9%97%ae%e9%a2%98"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;这一节收集了初学者在 NumPy &lt;strong&gt;向量化运算&lt;/strong&gt;上最常卡的 10 个问题。每个问题都给出&lt;strong&gt;直接答案&lt;/strong&gt;，能跑代码的都附上完整示例。&lt;/p&gt;
&lt;blockquote class='book-hint tip'&gt;
&lt;p&gt;&lt;strong&gt;怎么用这一节&lt;/strong&gt;
不用通读。遇到问题用 Ctrl+F 搜关键词，直接跳到对应那条。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;准备一下数据，下面每题都会用到：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;import&lt;/span&gt; &lt;span style="color:#0e84b5;font-weight:bold"&gt;numpy&lt;/span&gt; &lt;span style="color:#007020;font-weight:bold"&gt;as&lt;/span&gt; &lt;span style="color:#0e84b5;font-weight:bold"&gt;np&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sales &lt;span style="color:#666"&gt;=&lt;/span&gt; np&lt;span style="color:#666"&gt;.&lt;/span&gt;array([
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#40a070"&gt;120.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;135.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;150.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;165.0&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [ &lt;span style="color:#40a070"&gt;80.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;92.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;88.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;105.0&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#40a070"&gt;200.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;210.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;195.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;230.0&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [ &lt;span style="color:#40a070"&gt;60.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;72.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;85.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;78.0&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#40a070"&gt;150.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;145.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;160.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;175.0&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;scores &lt;span style="color:#666"&gt;=&lt;/span&gt; np&lt;span style="color:#666"&gt;.&lt;/span&gt;array([&lt;span style="color:#40a070"&gt;80&lt;/span&gt;, &lt;span style="color:#40a070"&gt;90&lt;/span&gt;, &lt;span style="color:#40a070"&gt;75&lt;/span&gt;, &lt;span style="color:#40a070"&gt;100&lt;/span&gt;, &lt;span style="color:#40a070"&gt;60&lt;/span&gt;])&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="q1什么是向量化运算与-python-for-循环相比有什么优势"&gt;Q1：什么是向量化运算？与 Python &lt;code&gt;for&lt;/code&gt; 循环相比有什么优势？&lt;a class="anchor" href="#q1%e4%bb%80%e4%b9%88%e6%98%af%e5%90%91%e9%87%8f%e5%8c%96%e8%bf%90%e7%ae%97%e4%b8%8e-python-for-%e5%be%aa%e7%8e%af%e7%9b%b8%e6%af%94%e6%9c%89%e4%bb%80%e4%b9%88%e4%bc%98%e5%8a%bf"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;答：&lt;/strong&gt; &lt;strong&gt;向量化 = 用一行数组表达式替代整个 for 循环。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;循环写法：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;prices &lt;span style="color:#666"&gt;=&lt;/span&gt; np&lt;span style="color:#666"&gt;.&lt;/span&gt;array([&lt;span style="color:#40a070"&gt;100.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;200.0&lt;/span&gt;, &lt;span style="color:#40a070"&gt;300.0&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;for&lt;/span&gt; i &lt;span style="color:#007020;font-weight:bold"&gt;in&lt;/span&gt; &lt;span style="color:#007020"&gt;range&lt;/span&gt;(&lt;span style="color:#007020"&gt;len&lt;/span&gt;(prices)):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; prices[i] &lt;span style="color:#666"&gt;=&lt;/span&gt; prices[i] &lt;span style="color:#666"&gt;*&lt;/span&gt; &lt;span style="color:#40a070"&gt;0.8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;向量化写法：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;prices &lt;span style="color:#666"&gt;=&lt;/span&gt; prices &lt;span style="color:#666"&gt;*&lt;/span&gt; &lt;span style="color:#40a070"&gt;0.8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;三个优势：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;&lt;/th&gt;
					&lt;th&gt;for 循环&lt;/th&gt;
					&lt;th&gt;向量化&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;速度&lt;/td&gt;
					&lt;td&gt;逐个解释执行&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;快 30～100 倍&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;代码行数&lt;/td&gt;
					&lt;td&gt;3 行&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;1 行&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;出错机会&lt;/td&gt;
					&lt;td&gt;下标越界、空数组、类型不匹配……&lt;/td&gt;
					&lt;td&gt;NumPy 帮你兜住&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;为什么快这么多？&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>