我正在关注Python的科学建议的某些教程,我遇到了使用索引的这种方式:
import numpy as np
l=np.array([8,5,2,3])
print(l[:,None])
此印刷品的回报是:
[[8]
[5]
[2]
[3]]
很明显这段代码做了什么,我发现它对我的提议非常有用,但我从来没有想过使用它,因为我不明白这个切片语法是什么。
任何人都可以解释一下这种切片的工作原理吗?
提前致谢。
答案 0 :(得分:0)
:
是所有元素的占位符,None
是np.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。