使用np.newaxis将2D数组转换为1D数组



我试图使用np.newaxis将具有一列的2D数组转换为1D向量。到目前为止,我得到的结果是3D数组,而不是1D向量或1D数组。

二维数组y1为:

y1.shape
(506, 1)
y1
array([[0.42      ],
[0.36666667],
[0.66      ],
[0.63333333],
[0.69333333],
... ])

现在我要把它转换成1D数组

import numpy as np
y2=y1[np.newaxis,:]
y2.shape
(1, 506, 1)

使用np后可以看到。newaxis, y2的形状变成了3D数组,我期待(506,)1D数组的形状。

我上面的代码有什么问题?由于

np.newaxis扩展维度so 2D ->3 d。如果你想减少你的维度2D ->1D,使用squeeze:

>>> a
array([[0.42      ],
[0.36666667],
[0.66      ],
[0.63333333],
[0.69333333]])
>>> a.shape()
(5, 1)
>>> a.squeeze()
array([0.42      , 0.36666667, 0.66      , 0.63333333, 0.69333333])
>>> a.squeeze().shape
(5,)

来自文档:

选择元组中的每个newaxis对象用于将结果选择的维度扩展一个单位长度的维度。添加的维度是新waaxis对象在选择元组中的位置。

np.newaxis()用于增加数组的维数。它不会减小尺寸。为了减小尺寸,您可以使用:reshape()

y1 = np.array(y1).reshape(-1,)
print(y1.shape)
>>> (506,)

最新更新