2015-09-02 53 views
2

是否有一個numpy函數以這種方式填充數組?numpy中是否有簡單的墊子?

import numpy as np 

def pad(x, length): 
    tmp = np.zeros((length,)) 
    tmp[:x.shape[0]] = x 
    return tmp 

x = np.array([1,2,3]) 
print pad(x, 5) 

輸出:

[ 1. 2. 3. 0. 0.] 

我不能找到一種方法與numpy.pad()

回答

5

做到這一點,您可以使用ndarray.resize()

>>> x = np.array([1,2,3]) 
>>> x.resize(5) 
>>> x 
array([1, 2, 3, 0, 0]) 

請注意,此功能表現不同從numpy.resize(),其中墊重複的副本陣列本身。 (一致性是誰不記得一切的人。)

+0

一個警告:如果'length'比它的形狀短,它會裁剪數組。 – Yariv

3

斯文Marnach的使用ndarray.resize()建議是可能做到這一點最簡單的方法,但爲了完整性,這裏是如何將其與numpy.pad做到:

In [13]: x 
Out[13]: array([1, 2, 3]) 

In [14]: np.pad(x, [0, 5-x.size], mode='constant') 
Out[14]: array([1, 2, 3, 0, 0]) 
相關問題