Reshapint ndarray从2d到3d

时间:2017-01-23 13:51:20

标签: python numpy

我目前在将numpy.ndarray从2d重塑为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 ....

2 个答案:

答案 0 :(得分: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, :]

答案 1 :(得分: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)