2016-08-18 309 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]]