Numpy之双冒号
Python序列切片地址可以写为[开始:结束:步长],其中的开始和结束可以省略,故双冒号实则为开始,结束有省略。
- 步长step=n;代表从start开始(start也算)每隔step间隔,取一个数,一直到结尾end
range(20)[::3]
[0,3,6,9,12,15,18]
- 当step等于负数的时候,从右向左取数
range(10)[::-1]
[9,8,7,6,5,4,3,2,1,0]
range(10)[::-2]
[9,7,5,3,1]
创建10*10的数组,要求:1,0沿着对角线间隔放置
n [40]: a = np.zeros((10, 10), dtype=np.int) //先定义一个10*10的数组
In [41]: a[0::2, 1::2] = 1 //从第二行开始,每两个为1,从置1的区域的第一列开始每两列置
In [42]: a[1::2, 0::2] = 1 //同理
In [43]: a
Out[43]:
array([[0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0]])