python numpy-tile函数

本文所有代码均可在Pycharm编译运行
Python版本:3.6.2

俗话说,新手看博客,高手看文档,那我们先按高手的套路走一波文档:help(numpy.tile)

Help on function tile in module numpy.lib.shape_base:

tile(A, reps)
Construct an array by repeating A the number of times given by reps.

If <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">reps</span><span class="token template-punctuation string">`</span></span> has length <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token template-punctuation string">`</span></span>d<span class="token template-string"><span class="token template-punctuation string">`</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">,</span> the result will have dimension <span class="token keyword">of</span>
<span class="token template-string"><span class="token template-punctuation string">`</span><span class="token template-punctuation string">`</span></span><span class="token function">max</span><span class="token punctuation">(</span>d<span class="token punctuation">,</span> <span class="token constant">A</span><span class="token punctuation">.</span>ndim<span class="token punctuation">)</span><span class="token template-string"><span class="token template-punctuation string">`</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">.</span>

If <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token template-punctuation string">`</span></span><span class="token constant">A</span><span class="token punctuation">.</span>ndim <span class="token operator">&lt;</span> d<span class="token template-string"><span class="token template-punctuation string">`</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">,</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">A</span><span class="token template-punctuation string">`</span></span> <span class="token keyword">is</span> promoted to be d<span class="token operator">-</span>dimensional by prepending <span class="token keyword">new</span>
<span class="token class-name">axes<span class="token punctuation">.</span></span> So a <span class="token function">shape</span> <span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">,</span><span class="token punctuation">)</span> array <span class="token keyword">is</span> promoted <span class="token function">to</span> <span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span> <span class="token keyword">for</span> <span class="token number">2</span><span class="token operator">-</span><span class="token constant">D</span> replication<span class="token punctuation">,</span>
or <span class="token function">shape</span> <span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span> <span class="token keyword">for</span> <span class="token number">3</span><span class="token operator">-</span><span class="token constant">D</span> replication<span class="token punctuation">.</span> If <span class="token keyword">this</span> <span class="token keyword">is</span> not the desired
behavior<span class="token punctuation">,</span> promote <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">A</span><span class="token template-punctuation string">`</span></span> to d<span class="token operator">-</span>dimensions manually before calling <span class="token keyword">this</span>
<span class="token keyword">function</span><span class="token punctuation">.</span>

If <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token template-punctuation string">`</span></span><span class="token constant">A</span><span class="token punctuation">.</span>ndim <span class="token operator">&gt;</span> d<span class="token template-string"><span class="token template-punctuation string">`</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">,</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">reps</span><span class="token template-punctuation string">`</span></span> <span class="token keyword">is</span> promoted to <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">A</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">.</span>ndim by pre<span class="token operator">-</span>pending <span class="token number">1</span>'s to it<span class="token punctuation">.</span>
Thus <span class="token keyword">for</span> an <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">A</span><span class="token template-punctuation string">`</span></span> <span class="token keyword">of</span> <span class="token function">shape</span> <span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">,</span> a <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">reps</span><span class="token template-punctuation string">`</span></span> <span class="token keyword">of</span> <span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span> <span class="token keyword">is</span> treated <span class="token keyword">as</span>
<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">.</span>

Note <span class="token punctuation">:</span> Although tile may be used <span class="token keyword">for</span> broadcasting<span class="token punctuation">,</span> it <span class="token keyword">is</span> strongly
recommended to use numpy's broadcasting operations and functions<span class="token punctuation">.</span>

Parameters
<span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span>
<span class="token constant">A</span> <span class="token punctuation">:</span> array_like
    The input array<span class="token punctuation">.</span>
reps <span class="token punctuation">:</span> array_like
    The <span class="token builtin">number</span> <span class="token keyword">of</span> repetitions <span class="token keyword">of</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">A</span><span class="token template-punctuation string">`</span></span> along each axis<span class="token punctuation">.</span>

Returns
<span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">-</span>
c <span class="token punctuation">:</span> ndarray
    The tiled output array<span class="token punctuation">.</span>

See Also
<span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span>
repeat <span class="token punctuation">:</span> Repeat elements <span class="token keyword">of</span> an array<span class="token punctuation">.</span>
broadcast_to <span class="token punctuation">:</span> Broadcast an array to a <span class="token keyword">new</span> <span class="token class-name">shape</span>

Examples
<span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span>
<span class="token operator">&gt;&gt;&gt;</span> a <span class="token operator">=</span> np<span class="token punctuation">.</span><span class="token function">array</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
<span class="token operator">&gt;&gt;&gt;</span> np<span class="token punctuation">.</span><span class="token function">tile</span><span class="token punctuation">(</span>a<span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span>
<span class="token function">array</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
<span class="token operator">&gt;&gt;&gt;</span> np<span class="token punctuation">.</span><span class="token function">tile</span><span class="token punctuation">(</span>a<span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
<span class="token function">array</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
       <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
<span class="token operator">&gt;&gt;&gt;</span> np<span class="token punctuation">.</span><span class="token function">tile</span><span class="token punctuation">(</span>a<span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
<span class="token function">array</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
       <span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span>

<span class="token operator">&gt;&gt;&gt;</span> b <span class="token operator">=</span> np<span class="token punctuation">.</span><span class="token function">array</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
<span class="token operator">&gt;&gt;&gt;</span> np<span class="token punctuation">.</span><span class="token function">tile</span><span class="token punctuation">(</span>b<span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span>
<span class="token function">array</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
       <span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
<span class="token operator">&gt;&gt;&gt;</span> np<span class="token punctuation">.</span><span class="token function">tile</span><span class="token punctuation">(</span>b<span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
<span class="token function">array</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
       <span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
       <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
       <span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span>

<span class="token operator">&gt;&gt;&gt;</span> c <span class="token operator">=</span> np<span class="token punctuation">.</span><span class="token function">array</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">,</span><span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
<span class="token operator">&gt;&gt;&gt;</span> np<span class="token punctuation">.</span><span class="token function">tile</span><span class="token punctuation">(</span>c<span class="token punctuation">,</span><span class="token punctuation">(</span><span class="token number">4</span><span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
<span class="token function">array</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
       <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
       <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
       <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span>

简单来说,tile函数的作用是让某个数组(其实不局限于数组,但我们这里只讨论数组),以某种方式重复,构造出新的数组,所以返回值也是个数组。

例1
a = array([0, 1, 2])
b = tile(a, 2)
print(b)

//结果为
[0, 1, 2, 0, 1, 2]

这个例子肯定很简单了,我用来说明tile的两个参数,第一个参数是数组,第二个参数可以是一个数字,更多情况可能是一个元组(这种情况可能更容易让人懵逼)。下面讨论当是元组时tile函数是如何执行的。

tile怎么执行的,有两个要点

(1)比较数组维度d和元组维度reps,如果d<reps,�在需要时对数组补中括号 [] 来增加维度。
(2)元组数字从右到左,数组维度从最深维度到最低维度。�假设元组为(a,b,c,d,e,f),则数组最深维度重复f次;然后次深维度重复e次;接着次次深维度重复d次;再然后次次次深维度重复c次…… 以此类推,直到对最低维度重复a次,结束,得到结果

例1说明:数组维度d=1,元组维度reps=1,所以对数组的维度进行重复时,不需要补中括号。元组元素从右到左看,第一个元素是2,数组最深维度是1。所以得到

[0, 1, 2, 0, 1, 2]

可以预见,如果只重复1次,会得到原数组本身

[0, 1, 2]
例2
a = array([0, 1, 2])
b = tile(a, (2, 1))
print(b)

//结果为
[[0, 1, 2],
[0, 1, 2]]

例2说明:数组只有1个维度,比较数组维度d和元组维度reps,d<reps,所以需要补中括号。元组从右到左看,而数组维度从最深的开始看。对数组a的最深维度重复1次,得到[[0, 1, 2]],然后再对数组a次深维度重复2次,得到[[0, 1, 2], [0, 1, 2]]

现在你应该可以按着上面的思路,得出以下3个函数结果,判断完后再试着在编译器中输出看是否与你预想的一致。

a = array([0, 1, 2])

①tile(a, (2, 2))

②tile(a, (2, 1, 1))

③tile(a, (2, 2, 1))






答案:


Numbers作图


Numbers作图

Numbers作图

能理解吗?欢迎留下您的见解和建议!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值