2016-03-11 26 views
8

NumPy append ve concatenate arasındaki fark nedir?NumPy append vs concatenate

Gözlem, concatenate biraz daha hızlı ve append, eksen belirtilmemişse diziyi düzleştirir.

In [52]: print a 
[[1 2] 
[3 4] 
[5 6] 
[5 6] 
[1 2] 
[3 4] 
[5 6] 
[5 6] 
[1 2] 
[3 4] 
[5 6] 
[5 6] 
[5 6]] 

In [53]: print b 
[[1 2] 
[3 4] 
[5 6] 
[5 6] 
[1 2] 
[3 4] 
[5 6] 
[5 6] 
[5 6]] 

In [54]: timeit -n 10000 -r 5 np.concatenate((a, b)) 
10000 loops, best of 5: 2.05 µs per loop 

In [55]: timeit -n 10000 -r 5 np.append(a, b, axis = 0) 
10000 loops, best of 5: 2.41 µs per loop 

In [58]: np.concatenate((a, b)) 
Out[58]: 
array([[1, 2], 
     [3, 4], 
     [5, 6], 
     [5, 6], 
     [1, 2], 
     [3, 4], 
     [5, 6], 
     [5, 6], 
     [1, 2], 
     [3, 4], 
     [5, 6], 
     [5, 6], 
     [5, 6], 
     [1, 2], 
     [3, 4], 
     [5, 6], 
     [5, 6], 
     [1, 2], 
     [3, 4], 
     [5, 6], 
     [5, 6], 
     [5, 6]]) 

In [59]: np.append(a, b, axis = 0) 
Out[59]: 
array([[1, 2], 
     [3, 4], 
     [5, 6], 
     [5, 6], 
     [1, 2], 
     [3, 4], 
     [5, 6], 
     [5, 6], 
     [1, 2], 
     [3, 4], 
     [5, 6], 
     [5, 6], 
     [5, 6], 
     [1, 2], 
     [3, 4], 
     [5, 6], 
     [5, 6], 
     [1, 2], 
     [3, 4], 
     [5, 6], 
     [5, 6], 
     [5, 6]]) 

In [60]: np.append(a, b) 
Out[60]: 
array([1, 2, 3, 4, 5, 6, 5, 6, 1, 2, 3, 4, 5, 6, 5, 6, 1, 2, 3, 4, 5, 6, 5, 
     6, 5, 6, 1, 2, 3, 4, 5, 6, 5, 6, 1, 2, 3, 4, 5, 6, 5, 6, 5, 6]) 
+1

'np.append' dönüşleri de tanımlandığı' https://github.com/numpy/numpy/blob/v1.10.0 bakınız np.concatenate' /numpy/lib/function_base.py#L4098-L4150 –

+2

Olası yinelemeli [ne zaman hstack/vstack kullanmalıyım? vs concatenate vs column \ _stack] kullanmalıyım (http://stackoverflow.com/questions/33356442/when-should- i kullanımlı-hstack-vstack-vs-ekleme yapılması-vs-BİRLEŞTİR-vs-kolon-yığın) – Simon

cevap

16

np.appendnp.concatenate kullanır:

def append(arr, values, axis=None): 
    arr = asanyarray(arr) 
    if axis is None: 
     if arr.ndim != 1: 
      arr = arr.ravel() 
     values = ravel(values) 
     axis = arr.ndim-1 
    return concatenate((arr, values), axis=axis)