我试图使用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,)