这种索引类型是Numpy数组的转置吗?

时间:2018-01-15 17:02:00

标签: python numpy transpose numpy-slicing

我正在关注Python的科学建议的某些教程,我遇到了使用索引的这种方式:

import numpy as np
l=np.array([8,5,2,3])
print(l[:,None])

此印刷品的回报是:

[[8]
 [5]
 [2]
 [3]]

很明显这段代码做了什么,我发现它对我的提议非常有用,但我从来没有想过使用它,因为我不明白这个切片语法是什么。

任何人都可以解释一下这种切片的工作原理吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

:是所有元素的占位符,Nonenp.newaxis,如果您尝试切割额外形状,则None会告诉numpy制作新维度。

因此,编写示例并避免混淆的正确方法是:

import numpy as np
l = np.array([8, 5, 2, 3])
print(l[:, np.newaxis])

答案 1 :(得分:0)

不,这是从1D到2D的数组维度的升级,精确的列向量。最常见的方法是使用None or np.newaxis

In [317]: l = np.array([8,5,2,3])

In [318]: l[:, np.newaxis]
Out[318]: 
array([[8],
       [5],
       [2],
       [3]])

In [319]: l.shape
Out[319]: (4,)

In [320]: l[:, np.newaxis].shape
Out[320]: (4, 1)

但是,您也可以使用以下方法将其转换为行向量:

In [321]: l[np.newaxis, :]
Out[321]: array([[8, 5, 2, 3]])

In [322]: (l[np.newaxis, :]).shape
Out[322]: (1, 4)

因此,:表示在切片操作期间沿着特定轴从阵列中选择所有元素

有关详细信息,请参阅how np.newaxis work