2012-08-02 47 views
0

這應該是很容易...僅連接現存的非空numpy數組?

我想連接的陣列A,B和C.這可能是一個或更多的人可能不存在或爲空。我想要將其餘數組連接起來。如果,例如,B是空的,我想連接A和C.

我讀過這些問題似乎相關:

How can I check whether the numpy array is empty or not?

How do you 'remove' a numpy array from a list of numpy arrays?

我假設有一個1 -2行方式來做到這一點。

+1

你是什麼意思時,你說「可能不存在」嗎? – user545424 2012-08-02 16:56:09

+0

A,B和C是列表中的數組,我可能會採用超出範圍的索引。但爲了保持這一點更一般,任何情況下A,B和/或C可能都沒有生成。 – 2012-08-02 17:01:47

回答

1

串聯空數組是沒有問題的:

In [1]: a = np.arange(10) 

In [2]: b = np.array([]) 

In [3]: c = np.arange(3) 

In [4]: np.concatenate((a,b,c)) 
Out[4]: array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 0., 1., 2.]) 

對於二維數組:

In [1]: a = np.arange(12.0).reshape((4,3)) 

In [2]: b = np.arange(24.0).reshape((8,3)) 

In [3]: c = np.array([]) 

In [4]: np.concatenate([x for x in [a,b,c] if x.size > 0]) 
Out[4]: 
array([[ 0., 1., 2.], 
     [ 3., 4., 5.], 
     [ 6., 7., 8.], 
     [ 9., 10., 11.], 
     [ 0., 1., 2.], 
     [ 3., 4., 5.], 
     [ 6., 7., 8.], 
     [ 9., 10., 11.], 
     [ 12., 13., 14.], 
     [ 15., 16., 17.], 
     [ 18., 19., 20.], 
     [ 21., 22., 23.]]) 
+0

我知道,但這些不是一維數組,除非它們是空的。 – 2012-08-02 16:57:51

+0

@TristanKlassen:陣列是什麼形狀?如果他們不是1D,那麼當你說「連接」時,你應該確切地指定你的意思。 – user545424 2012-08-02 17:00:39

+0

2D。沿軸保證它們的大小相同,除非它們是空的。 – 2012-08-02 17:03:45