2016-08-18 233 views
2

是否有替代或更好的方法將numpy矩陣轉換爲python數組?將numpy矩陣轉換爲python數組

>>> import numpy 
>>> import array 
>>> b = numpy.matrix("1.0 2.0 3.0; 4.0 5.0 6.0", dtype="float16") 
>>> print(b) 
[[ 1. 2. 3.] 
[ 4. 5. 6.]] 
>>> a = array.array("f") 
>>> a.fromlist((b.flatten().tolist())[0]) 
>>> print(a) 
array('f', [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]) 

回答

1

你可以轉換爲NumPy array,併產生了扁平版本.ravel().flatten()。這也可以通過簡單地使用功能np.ravel本身來實現,因爲它們都需要引擎蓋。最後,使用array.array()就可以了,就像這樣 -

a = array.array('f',np.ravel(b)) 

採樣運行 -

In [107]: b 
Out[107]: 
matrix([[ 1., 2., 3.], 
     [ 4., 5., 6.]], dtype=float16) 

In [108]: array.array('f',np.ravel(b)) 
Out[108]: array('f', [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]) 
-1

這裏有一個例子:

>>> x = np.matrix(np.arange(12).reshape((3,4))); x 
matrix([[ 0, 1, 2, 3], 
     [ 4, 5, 6, 7], 
     [ 8, 9, 10, 11]]) 
>>> x.tolist() 
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]