2013-10-13 26 views
16

Seçilen eksen boyunca 0 ile bir numpy tensörünü doldurmak istiyorum. Örneğin (4,3,2) biçiminde r tensörü var ancak yalnızca son iki ekseni doldurmakla ilgileniyorum (diğer bir deyişle, yalnızca matriste ped). Tek satırlık python kodu ile yapmak mümkün mü?Bazı eksen boyunca sıfırlar (Python) nasıl yapılır?

cevap

36

kullanabilirsiniz np.pad():

a = np.ones((4, 3, 2)) 

# npad is a tuple of (n_before, n_after) for each dimension 
npad = ((0, 0), (1, 2), (2, 1)) 
b = np.pad(a, pad_width=npad, mode='constant', constant_values=0) 

print(b.shape) 
# (4, 6, 5) 

print(b) 
# [[[ 0. 0. 0. 0. 0.] 
# [ 0. 0. 1. 1. 0.] 
# [ 0. 0. 1. 1. 0.] 
# [ 0. 0. 1. 1. 0.] 
# [ 0. 0. 0. 0. 0.] 
# [ 0. 0. 0. 0. 0.]] 

# [[ 0. 0. 0. 0. 0.] 
# [ 0. 0. 1. 1. 0.] 
# [ 0. 0. 1. 1. 0.] 
# [ 0. 0. 1. 1. 0.] 
# [ 0. 0. 0. 0. 0.] 
# [ 0. 0. 0. 0. 0.]] 

# [[ 0. 0. 0. 0. 0.] 
# [ 0. 0. 1. 1. 0.] 
# [ 0. 0. 1. 1. 0.] 
# [ 0. 0. 1. 1. 0.] 
# [ 0. 0. 0. 0. 0.] 
# [ 0. 0. 0. 0. 0.]] 

# [[ 0. 0. 0. 0. 0.] 
# [ 0. 0. 1. 1. 0.] 
# [ 0. 0. 1. 1. 0.] 
# [ 0. 0. 1. 1. 0.] 
# [ 0. 0. 0. 0. 0.] 
# [ 0. 0. 0. 0. 0.]]] 
+5

Not ki (n_before, n_after) sıra/sütun sayısı ile ilgili olup; öyleyse (1,2) yukarıda, ikinci boyut araçları için, bir satır önce (yukarıda) ve iki satır sonra (aşağıda). Aynı şekilde, (2,1) önce 2 satır anlamına gelir (0'ın 2 sütunu tarafından sağa kaydırılır ve 1 sütun sıfır ile doldurulur.) – berto77

+0

@ berto77 Yorumunuz için çok çabaladım. –

İlgili konular