2013-08-04 18 views
5

Esiste un modo pythonic per convertire una matrice strutturata in vettore?Python array to 1-D Vector

Ad esempio:

Sto cercando di convertire una matrice simile:

[(9,), (1,), (1, 12), (9,), (8,)] 

ad un vettore come:

[9,1,1,12,9,8] 
+2

Questo in realtà non sembra NumPy. – user2357112

risposta

8
In [15]: import numpy as np 

In [16]: x = np.array([(9,), (1,), (1, 12), (9,), (8,)]) 

In [17]: np.concatenate(x) 
Out[17]: array([ 9, 1, 1, 12, 9, 8]) 

Un'altra opzione è np.hstack(x), ma per questo scopo, np.concatenate è più veloce:

In [14]: x = [tuple(np.random.randint(10, size=np.random.randint(10))) for i in range(10**4)] 

In [15]: %timeit np.hstack(x) 
10 loops, best of 3: 40.5 ms per loop 

In [16]: %timeit np.concatenate(x) 
100 loops, best of 3: 13.6 ms per loop 
4

Non è necessario utilizzare alcun numpy, è possibile utilizzare sum:

myList = [(9,), (1,), (1, 12), (9,), (8,)] 
list(sum(myList,())) 

risultato:

[9, 1, 1, 12, 9, 8]