我最近正在阅读一个开源项目的源代码。当程序员想要将行向量转换array([0, 1, 2])为列向量时array([[0], [1], [2]]),np.reshape(x, (-1,1))使用 , 。在评论中,它说 reshape 是必要的,以保持数据连续性[:, np.newaxis],而不是没有。
我尝试了这两种方法,似乎它们会返回相同的结果。那么这里的数据连续性保留是什么意思呢?
两种方式都返回完全相同数据的视图,因此“数据连续性”可能不是问题,因为数据没有改变,只是视图改变了。请参阅Numpy:使用 reshape 或 newaxis 添加维度。
但是,使用 可能有实际优势.reshape((-1,1)),因为无论原始形状如何,它都会将数组重塑为二维数组。对于[:, np.newaxis],结果将取决于数组的原始形状,考虑到这些:
In [3]: a1 = np.array([0, 1, 2])
In [4]: a2 = np.array([[0, 1, 2]])
In [5]: a1.reshape((-1, 1))
Out[5]:
array([[0],
[1],
[2]])
In [6]: a2.reshape((-1, 1))
Out[6]:
array([[0],
[1],
[2]])
In [7]: a1[:, np.newaxis]
Out[7]:
array([[0],
[1],
[2]])
In [8]: a2[:, np.newaxis]
Out[8]: array([[[0, 1, 2]]])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10326 次 |
| 最近记录: |