2016-11-28 117 views
0

我有一個numpy的數組作爲如何重塑數組numpy的陣列分爲單列

[[0 0 0 ..., 0 0 0] 
[0 0 0 ..., 0 0 0] 
[0 0 0 ..., 0 0 0] 
..., 
[0 0 0 ..., 0 0 0] 
[0 0 0 ..., 0 0 0] 
[0 0 0 ..., 0 0 0]] 

我想它作爲

0 
0 
0 
. 
. 
0 
0 

我知道,我們必須使用重塑功能,但如何使用它,是我無法弄清楚,

我嘗試

np.reshape(new_arr, newshape=1) 

這給出了一個錯誤

ValueError: total size of new array must be unchanged 

documentation是不是很友好

+1

'np.reshape(new_arr,newshape = -1)'的數量,。 '-1'讓numpy計算所需的形狀。 – hpaulj

回答

5

您還可以在numpy.ndarray.flatten看看:

a = np.array([[1,2], [3,4]]) 
a.flatten() 

# array([1, 2, 3, 4]) 

flattenravel之間的區別是,拼合將返回數組的副本,而如果可能的話,ravel將會覆蓋原始數組。因此,如果修改由ravel返回的數組,它也可能會修改原始數組中的條目。

創建原始數組的副本通常比較安全,但由於需要分配新內存來創建它,因此需要更多的時間。

你可以閱讀更多關於這兩個選項here之間的區別。

0

使用ravel()方法:

In [1]: arr = np.zeros((2, 2)) 

In [2]: arr 
Out[2]: 
array([[ 0., 0.], 
     [ 0., 0.]]) 

In [3]: arr.ravel() 
Out[3]: array([ 0., 0., 0., 0.]) 
1

按照documentation

np.reshape(new_arr, newshape=n*m) 

其中nm分別的行和列,的new_arr

+1

'newshape = -1'工作嗎? – hpaulj