了解numpy数组切片

时间:2017-07-25 06:32:08

标签: python arrays numpy

我有一个输入数组X.

1.8.2

有人可以帮我理解下面的代码 -

[[68 72  2  0 15 74 34 20 36 3]
[20  2 79 20 80 45 15 20 11 45]
[42 13 80 35  3  3 38 70 74 75]
[80 20 78  5 34 13 80 11 20 72]
[20 13 15 20 13 75 81 20 75 13]
[20 32 15 20 29  2 75  3 45 80]
[72 74 80 20 64 45 79 74 20  1]
[37 20  6  5 15 20 80 45 29 20]
[15 20 13 75 80 65 15 35 20 60]
[20 75  2 13 78 20 15 45 20 72]]

2 个答案:

答案 0 :(得分:3)

首先:

y = np.zeros_like(x)

这将创建一个充满零的数组,其大小与x相同,并将其存储在y中。

然后y[:, :-1], y[:, -1]< - 除最后一列以外的所有列,以及最后一列

设置为=

x[:, 1:], x[:, 0]< - 除第一列和第一列外的其他所有内容。

将第一列滚动到最后一列是一种非常低效的方法。

更好的方法是

y = np.roll(x, -1, axis = 1)

答案 1 :(得分:0)

简写:

y = np.zeros_like(x)
y[:, :-1] = x[:, 1:]
y[:, -1] = x[:, 0]

转换为:

使y0尺寸相同的x数组。

设置y的部分,其中包括除最后一行之外的所有行和所有列等于x的部分,其中包括除第一行之外的所有行和所有列。

y的最后一列设为等于x的第一列。

基本上,y看起来像x,除非第一列被移除并在最后添加。