2014-11-07 3 views
1

임의 길이의 상수를 스택하는 간결한 방법이 있습니까 ndarray?Numpy 배열로 상수를 간결하게 쌓으시겠습니까?

b = np.arange(4) 

# Pad b with 5: 
np.vstack((5 * np.ones_like(b), b)) 

# Another way: 
np.pad(b[np.newaxis, :], ((1,0), (0,0)), 'constant', constant_values=5) 

첫 번째는 너무 나쁘지는 않지만 방송을 활용할 수있는 방법이 있어야처럼 보인다 :

지금까지 내가 발견 할 수 있었던 가장이 있습니다. R에서 왔을 때, 내 첫 번째 본능은 이런 식으로 뭔가를하는 것이 었습니다 :

np.vstack((5, b)) # similar to R's rbind(5, b) 

불행히도 작동하지 않습니다.

답변

1

더 간결하고 약간 빠른 그늘 :

np.vstack(([5]*len(b),b)) 

성능 비교 :

%%timeit 
np.vstack(([5]*len(b),b)) 

100000 loops, best of 3: 15.8 µs per loop 

%%timeit 
np.vstack((5 * np.ones_like(b), b)) 

10000 loops, best of 3: 21 µs per loop 

%%timeit 
np.pad(b[np.newaxis, :], ((1,0), (0,0)), 'constant', constant_values=5) 

10000 loops, best of 3: 39.6 µs per loop 

관련 문제