<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>第 5 章：数组实用工具（Array Utilities） on 跟我学机器学习</title><link>https://machinelearningwithme.com/course/numpy/chapter05/</link><description>Recent content in 第 5 章：数组实用工具（Array Utilities） on 跟我学机器学习</description><generator>Hugo</generator><language>zh_CN</language><lastBuildDate>Sun, 25 Oct 2026 22:13:26 +0800</lastBuildDate><atom:link href="https://machinelearningwithme.com/course/numpy/chapter05/index.xml" rel="self" type="application/rss+xml"/><item><title>NumPy 数组实用工具详解：行极值、缩尾处理、数值量化与分帧、数组重复差分与相关性 | NumPy 数组计算实战</title><link>https://machinelearningwithme.com/course/numpy/chapter05/core-concepts/</link><pubDate>Sun, 25 Oct 2026 09:30:00 +0800</pubDate><guid>https://machinelearningwithme.com/course/numpy/chapter05/core-concepts/</guid><description>&lt;h1 id="第-51-节-核心知识点"&gt;第 5.1 节 核心知识点&lt;a class="anchor" href="#%e7%ac%ac-51-%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;以及它们&lt;strong&gt;对应的是哪一列&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;会用&lt;strong&gt;分位数 + &lt;code&gt;np.clip&lt;/code&gt;&lt;/strong&gt; 做&lt;strong&gt;缩尾处理&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;会用 &lt;strong&gt;&lt;code&gt;np.digitize&lt;/code&gt;&lt;/strong&gt; 把连续数值&lt;strong&gt;量化&lt;/strong&gt;成分档标签；&lt;/li&gt;
&lt;li&gt;会用 &lt;strong&gt;&lt;code&gt;sliding_window_view&lt;/code&gt;&lt;/strong&gt; 把一维序列切成&lt;strong&gt;滑动窗口&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;分得清 &lt;strong&gt;&lt;code&gt;tile()&lt;/code&gt;&lt;/strong&gt; 和 &lt;strong&gt;&lt;code&gt;repeat()&lt;/code&gt;&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;会用 &lt;strong&gt;&lt;code&gt;diff()&lt;/code&gt;&lt;/strong&gt; 算相邻差分、&lt;strong&gt;&lt;code&gt;concatenate()&lt;/code&gt;&lt;/strong&gt; 拼数组、&lt;strong&gt;&lt;code&gt;corrcoef()&lt;/code&gt;&lt;/strong&gt; 算相关系数。&lt;/li&gt;
&lt;/ul&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;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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="知识点-1提取每行的极值row-extremes"&gt;知识点 1：提取每行的极值（Row Extremes）&lt;a class="anchor" href="#%e7%9f%a5%e8%af%86%e7%82%b9-1%e6%8f%90%e5%8f%96%e6%af%8f%e8%a1%8c%e7%9a%84%e6%9e%81%e5%80%bcrow-extremes"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;问题：&lt;/strong&gt; 一张 5 行 4 列的销售表，我想知道&lt;strong&gt;每个城市最好的那个季度是哪个&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;分两步：先用 &lt;code&gt;max(axis=1)&lt;/code&gt; 拿值，再用 &lt;code&gt;argmax(axis=1)&lt;/code&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;&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;row_max &lt;span style="color:#666"&gt;=&lt;/span&gt; sales&lt;span style="color:#666"&gt;.&lt;/span&gt;max(axis&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#40a070"&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;print&lt;/span&gt;(row_max)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;[165. 105. 230. 85. 175.]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;这是「每行的最大值」，5 个数对应 5 个城市。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>NumPy 编程练习：5 道动手题学会数组实用工具（行极值、缩尾、量化分帧、重复差分、拼接相关性） | NumPy 数组计算实战</title><link>https://machinelearningwithme.com/course/numpy/chapter05/coding-exercises/</link><pubDate>Sun, 25 Oct 2026 09:30:00 +0800</pubDate><guid>https://machinelearningwithme.com/course/numpy/chapter05/coding-exercises/</guid><description>&lt;h1 id="第-52-节-编程练习"&gt;第 5.2 节 编程练习&lt;a class="anchor" href="#%e7%ac%ac-52-%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;。第 3 题内容最多，建议留够时间。&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;/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%e6%8f%90%e5%8f%96%e4%ba%8c%e7%bb%b4%e6%95%b0%e7%bb%84%e6%af%8f%e4%b8%80%e8%a1%8c%e7%9a%84%e6%9c%80%e5%a4%a7%e5%80%bc%e6%9c%80%e5%b0%8f%e5%80%bc%e5%8f%8a%e5%af%b9%e5%ba%94%e7%b4%a2%e5%bc%95"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;题目：&lt;/strong&gt; 完成下面 6 个任务：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;算出每行的&lt;strong&gt;最大值&lt;/strong&gt;，存到 &lt;code&gt;row_max&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;算出每行的&lt;strong&gt;最小值&lt;/strong&gt;，存到 &lt;code&gt;row_min&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;算出每行最大值所在的&lt;strong&gt;列号&lt;/strong&gt;，存到 &lt;code&gt;row_argmax&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;算出每行最小值所在的&lt;strong&gt;列号&lt;/strong&gt;，存到 &lt;code&gt;row_argmin&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;quarter_names[row_argmax]&lt;/code&gt; 把列号翻译成&lt;strong&gt;季度名&lt;/strong&gt;，打印出来；&lt;/li&gt;
&lt;li&gt;找出&lt;strong&gt;最好卖的城市&lt;/strong&gt;和&lt;strong&gt;最难卖的城市&lt;/strong&gt;（比较每行的合计），打印名字。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;思考题：&lt;/strong&gt; 第 6 题要比较「每行的合计」，为什么要先 &lt;code&gt;sum(axis=1)&lt;/code&gt; 再 &lt;code&gt;argmax()&lt;/code&gt;，不能直接对 &lt;code&gt;sales&lt;/code&gt; 用 &lt;code&gt;argmax()&lt;/code&gt;？&lt;/p&gt;
&lt;details class="example-disclosure" style="margin-top: 1rem;"&gt;
&lt;summary style="cursor:pointer;font-weight:600;"&gt;点击查看参考答案&lt;/summary&gt;
&lt;div style="margin-top: 1rem;"&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:#60a0b0;font-style:italic"&gt;# 1. 每行最大值&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;row_max &lt;span style="color:#666"&gt;=&lt;/span&gt; sales&lt;span style="color:#666"&gt;.&lt;/span&gt;max(axis&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#40a070"&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;print&lt;/span&gt;(row_max)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;[165. 105. 230. 85. 175.]&lt;/code&gt;&lt;/pre&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:#60a0b0;font-style:italic"&gt;# 2. 每行最小值&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;row_min &lt;span style="color:#666"&gt;=&lt;/span&gt; sales&lt;span style="color:#666"&gt;.&lt;/span&gt;min(axis&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#40a070"&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;print&lt;/span&gt;(row_min)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;[120. 80. 195. 60. 145.]&lt;/code&gt;&lt;/pre&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:#60a0b0;font-style:italic"&gt;# 3. 每行最大值的列号&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;row_argmax &lt;span style="color:#666"&gt;=&lt;/span&gt; sales&lt;span style="color:#666"&gt;.&lt;/span&gt;argmax(axis&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#40a070"&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;print&lt;/span&gt;(row_argmax)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;[3 3 3 2 3]&lt;/code&gt;&lt;/pre&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:#60a0b0;font-style:italic"&gt;# 4. 每行最小值的列号&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;row_argmin &lt;span style="color:#666"&gt;=&lt;/span&gt; sales&lt;span style="color:#666"&gt;.&lt;/span&gt;argmin(axis&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#40a070"&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;print&lt;/span&gt;(row_argmin)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;[0 0 2 0 1]&lt;/code&gt;&lt;/pre&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:#60a0b0;font-style:italic"&gt;# 5. 翻译成季度名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;print&lt;/span&gt;(quarter_names[row_argmax])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;print&lt;/span&gt;(quarter_names[row_argmin])&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;[&amp;#39;Q4&amp;#39; &amp;#39;Q4&amp;#39; &amp;#39;Q4&amp;#39; &amp;#39;Q3&amp;#39; &amp;#39;Q4&amp;#39;]
[&amp;#39;Q1&amp;#39; &amp;#39;Q1&amp;#39; &amp;#39;Q3&amp;#39; &amp;#39;Q1&amp;#39; &amp;#39;Q2&amp;#39;]&lt;/code&gt;&lt;/pre&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:#60a0b0;font-style:italic"&gt;# 6. 最好卖 / 最难卖的城市&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;totals &lt;span style="color:#666"&gt;=&lt;/span&gt; sales&lt;span style="color:#666"&gt;.&lt;/span&gt;sum(axis&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#40a070"&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;print&lt;/span&gt;(city_names[totals&lt;span style="color:#666"&gt;.&lt;/span&gt;argmax()], totals&lt;span style="color:#666"&gt;.&lt;/span&gt;max())
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;print&lt;/span&gt;(city_names[totals&lt;span style="color:#666"&gt;.&lt;/span&gt;argmin()], totals&lt;span style="color:#666"&gt;.&lt;/span&gt;min())&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;广州 835.0
深圳 295.0&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;要点：&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>NumPy 常见问题答疑：10 个数组实用工具的疑问（极值提取、缩尾、量化分帧、拼接相关性） | NumPy 数组计算实战</title><link>https://machinelearningwithme.com/course/numpy/chapter05/faq/</link><pubDate>Sun, 25 Oct 2026 09:30:00 +0800</pubDate><guid>https://machinelearningwithme.com/course/numpy/chapter05/faq/</guid><description>&lt;h1 id="第-53-节-常见问题"&gt;第 5.3 节 常见问题&lt;a class="anchor" href="#%e7%ac%ac-53-%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;strong&gt;这是整套课程的最后一节&lt;/strong&gt;，看完这一节，五章内容就齐了。&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;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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="q1如何使用-npmaxnpmin-和-npargmax-提取数组极值及其位置"&gt;Q1：如何使用 &lt;code&gt;np.max()&lt;/code&gt;、&lt;code&gt;np.min()&lt;/code&gt; 和 &lt;code&gt;np.argmax()&lt;/code&gt; 提取数组极值及其位置？&lt;a class="anchor" href="#q1%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8-npmaxnpmin-%e5%92%8c-npargmax-%e6%8f%90%e5%8f%96%e6%95%b0%e7%bb%84%e6%9e%81%e5%80%bc%e5%8f%8a%e5%85%b6%e4%bd%8d%e7%bd%ae"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;答：&lt;/strong&gt; &lt;strong&gt;&lt;code&gt;max&lt;/code&gt; / &lt;code&gt;min&lt;/code&gt; 给「值」，&lt;code&gt;argmax&lt;/code&gt; / &lt;code&gt;argmin&lt;/code&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;&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;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;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"&gt;print&lt;/span&gt;(scores&lt;span style="color:#666"&gt;.&lt;/span&gt;max()) &lt;span style="color:#60a0b0;font-style:italic"&gt;# 最大值&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;print&lt;/span&gt;(scores&lt;span style="color:#666"&gt;.&lt;/span&gt;min()) &lt;span style="color:#60a0b0;font-style:italic"&gt;# 最小值&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;print&lt;/span&gt;(scores&lt;span style="color:#666"&gt;.&lt;/span&gt;argmax()) &lt;span style="color:#60a0b0;font-style:italic"&gt;# 最大值在第几个（下标）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;print&lt;/span&gt;(scores&lt;span style="color:#666"&gt;.&lt;/span&gt;argmin()) &lt;span style="color:#60a0b0;font-style:italic"&gt;# 最小值在第几个（下标）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;100
60
3
4&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;argmax&lt;/code&gt; 返回的是「下标」，不是值。&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;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;&lt;span style="color:#007020"&gt;print&lt;/span&gt;(names[scores&lt;span style="color:#666"&gt;.&lt;/span&gt;argmax()]) &lt;span style="color:#60a0b0;font-style:italic"&gt;# 小美&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;code&gt;axis&lt;/code&gt;：&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>