<p>当您想以各种方式重复数组时,<code>tile</code>和<code>repeat</code>是很方便的函数:</p>
<pre><code>In [233]: np.tile(np.array([4,6,6,1]),(3,1))
Out[233]:
array([[4, 6, 6, 1],
[4, 6, 6, 1],
[4, 6, 6, 1]])
</code></pre>
<p>失败时,请注意<code>fill</code>的文档:</p>
<pre><code>a.fill(value)
Fill the array with a scalar value.
</code></pre>
<p><code>np.array([4,6,6,1])</code>不是标量值。<code>a</code>被初始化为3元素<code>float</code>数组。</p>
<p>如果形状正确,可以为数组的元素赋值:</p>
<pre><code>In [241]: a=np.empty(3)
In [242]: a[:]=np.array([1,2,3]) # 3 numbers into 3 slots
In [243]: a
Out[243]: array([ 1., 2., 3.])
In [244]: a=np.empty((3,4))
In [245]: a[:]=np.array([1,2,3,4]) # 4 numbers into 4 columns
In [246]: a
Out[246]:
array([[ 1., 2., 3., 4.],
[ 1., 2., 3., 4.],
[ 1., 2., 3., 4.]])
</code></pre>
<p>此<code>fill</code>适用于对象类型数组,但结果却大不相同,应谨慎使用:</p>
<pre><code>In [247]: a=np.empty(3, object)
In [248]: a
Out[248]: array([None, None, None], dtype=object)
In [249]: a.fill(np.array([1,2,3,4]))
In [250]: a
Out[250]: array([array([1, 2, 3, 4]), array([1, 2, 3, 4]), array([1, 2, 3, 4])], dtype=object)
</code></pre>
<p>此(3,)数组与其他方法生成的(3,4)数组不同。对象数组的每个元素都是指向同一事物的指针。更改<code>a</code>的一个元素中的值会更改所有元素中的值(因为它们是同一个对象)。</p>
<pre><code>In [251]: a[0][3]=5
In [252]: a
Out[252]: array([array([1, 2, 3, 5]), array([1, 2, 3, 5]), array([1, 2, 3, 5])], dtype=object)
</code></pre>