2017-01-23 5 views
1

ich zur Zeit habe Probleme eine numpy.ndarray von 2d Umformung bis 3d ..Reshapint ndarray von 2D auf 3D

die aktuelle Form meines numpy.ndarray ist (221.286, 2050) und ich brauche es zu sein (221286, 1, 2050)

ich habe versucht, es so zu tun:

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

aber das scheint eine Art und Weise verschiedene numpy.ndarray zu schaffen ....

Antwort

1

np.reshape, wenn sie als eine Funktion verwendet wird, nimmt das Array als erstes Argument neu zu gestalten, und die neue Form als zweites. So sollte diese es tun:

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

Sie auch die .reshape Methode von ndarrays verwenden könnte, die Sie nicht explizit benötigt, um die Form in einem Tupel zu wickeln:

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

Obwohl für diesen speziellen Fall Am zweckmäßigsten ist es, das Array mit np.newaxis zu indizieren:

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

Sie könnenverwendenFunktion.

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

Beispiel:

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)