2017-01-23 26 views
1

我目前有重塑從2D的numpy.ndarray到3d問題..Reshapint ndarray到3d

我numpy.ndarray的電流形狀(221286,2050),我需要它是 (221286,1,2050)

我試圖做這樣的:

train_set_data_vstacked_normalized_reshaped = np.reshape(train_set_data_vstacked_normalized.shape[0],1,train_set_data_vstacked_normalized.shape[1]) 

但這似乎創建方式不同numpy.ndarray ....

回答

1

np.reshape,作爲函數使用時,需要在陣列重塑作爲第一個參數,並且新的形狀爲第二。因此,這應該這樣做:

shape = your_long_named_array.shape 
your_long_named_array_reshaped = np.reshape(your_long_named_array, 
              (shape[0], 1, shape[1])) 

您還可以使用ndarrays的.reshape方法,它不要求你明確包裹形狀的元組:

your_long_named_array_reshaped = your_long_named_array.reshape(shape[0], 1, 
                   shape[1]) 

雖然這種特殊情況下,最方便的可能是用np.newaxis索引陣列:

your_long_named_array_reshaped = your_long_named_array[:, np.newaxis, :] 
0

您可以使用expand_dims功能。

train_set_data_vstacked_normalized_reshaped = np.expand_dims(train_set_data_vstacked_normalized.shape,axis=1) 

例如:

In [16]: x = np.zeros((221286, 2050)) 

In [17]: x.shape 
Out[17]: (221286, 2050) 

In [18]: y = np.expand_dims(x, axis=1) 

In [19]: y.shape 
Out[19]: (221286, 1, 2050)