2017-07-25 149 views
0

我有一个输入数组X.了解numpy的阵列切片

[[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]] 

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

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

你有没有试过代码来看看它做了什么? –

回答

3

第一:

y = np.zeros_like(x) 

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

然后y[:, :-1], y[:, -1] < - 但所有的最后一列,最后一列

设置=到:

x[:, 1:], x[:, 0] < - 所有,但第一列,第一列。

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

一个更好的方法来做到这一点是

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

简写为:

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

翻译为:

y0 S上的相同尺寸的数组作为x

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

设置最后一列y等于第一列x

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