我正在使用以下内容创建一个numpy数组:
X = np.linspace(-5, 5, num=500)
这会生成在-5和5之间均匀采样500点的点。结果数组的形状为:(500,)
。现在,我需要将它传递给一个需要二维数组的函数。所以,我可以重塑它:
X = X.reshape((500, 1))
但是,我注意到X = X[:, None]
具有相同的效果。但是对于我的生活,我无法理解这种语法在做什么。希望有人可以对此有所了解。
答案 0 :(得分:6)
语法X[: ,None]
实际上与:
X[:, np.newaxis]
为原始数组添加新维度。
答案 1 :(得分:3)
Python解释器翻译
x[:,None]
到
x.__getitem__((slice(None,None,None), None))
ndarray
__getitem__
的实施与x.reshape(500,1)
的行为大致相同。实施细节会有所不同,但效果是一样的。 `
所以在语法层面上,它只是普通的Python。但numpy
语义赋予它独特的意义。
x[:, np.newaxis]
可能更清晰,但np.newaxis
只是None
的别名:
In [48]: np.newaxis is None
Out[48]: True