python:numpy重塑一个数组

时间:2015-08-26 14:24:51

标签: python arrays numpy

我正在使用以下内容创建一个numpy数组:

X = np.linspace(-5, 5, num=500)

这会生成在-5和5之间均匀采样500点的点。结果数组的形状为:(500,)。现在,我需要将它传递给一个需要二维数组的函数。所以,我可以重塑它:

X = X.reshape((500, 1))

但是,我注意到X = X[:, None]具有相同的效果。但是对于我的生活,我无法理解这种语法在做什么。希望有人可以对此有所了解。

2 个答案:

答案 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