2015-06-05 36 views
4

如果我創建一個數組X = np.random.rand(D, 1)它塑造(3L, 1L)如何更改numpy中的數組形狀?

[[ 0.31215124] 
[ 0.84270715] 
[ 0.41846041]] 

如果我創造我自己的數組A = np.array([0,1,2])那麼它具有形狀(3L,),看起來像

[0 1 2] 

我怎麼能強迫形狀(3L, 1L)上我的陣列A

+0

對不起你找誰'A.reshape([3,1])'? – EdChum

回答

0

您可以設置形狀directy即

A.shape = (3L, 1L) 

,或者您可以使用調整大小功能:

A.resize((3L, 1L)) 

或重塑創建過程中

A = np.array([0,1,2]).reshape((3L, 1L)) 
+0

除非你知道你在做什麼,否則應該避免賦予'shape'和'resize',因爲它們都有可能會讓新用戶感到驚訝的行爲。 –

2

numpy的已有「重塑「方法即numpy.ndarray.shape您可以使用它來更改陣列的形狀。

A.shape = (3,1) 
+0

爲什麼選擇投票? –

+1

也許有人對你使用'功能'有挑剔。 'np.reshape'是一個函數,'A.reshape'是一個方法,'A.shape ='是一個功能?他們都做同樣的工作。 – hpaulj

+0

設置'shape'有時會產生錯誤,並不能保證在所有情況下都能正常工作。只是添加信息,我不是倒票。 –

1

的numpy的模塊具有reshape功能和ndarray有reshape方法,無論這些應努力創建具有形狀的數組,你想:

import numpy as np 
A = np.reshape([1, 2, 3, 4], (4, 1)) 
# Now change the shape to (2, 2) 
A = A.reshape(2, 2) 

numpy的將檢查大小陣列不變,即prod(old_shape) == prod(new_shape)。由於這種關係,你被允許更換-1和numpy的形狀中的一個值會弄清楚你:

A = A.reshape([1, 2, 3, 4], (-1, 1)) 
2
A=np.array([0,1,2]) 
A.shape=(3,1) 

A=np.array([0,1,2]).reshape((3,1)) #reshape takes the tuple shape as input