【Python】实例详解 numpy库ndarray多维数组的切片赋值操作

实例:Create a 8x8 matrix and fill it with a checkerboard pattern(创建一个8x8的棋盘式矩阵)

import numpy as np
z = np.zeros((8,8))
z[1::2,::2] = 1
[[0 0 0 0 0 0 0 0]
 [1 0 1 0 1 0 1 0]
 [0 0 0 0 0 0 0 0]
 [1 0 1 0 1 0 1 0]
 [0 0 0 0 0 0 0 0]
 [1 0 1 0 1 0 1 0]
 [0 0 0 0 0 0 0 0]
 [1 0 1 0 1 0 1 0]]

上面实现的是矩阵中从第‘1’行开始每隔一行,从第‘0’列开始,每隔1列 赋值为1

import numpy as np
z = np.zeros((8,8))
z[::2,1::2] = 1
[[0 1 0 1 0 1 0 1]
 [0 0 0 0 0 0 0 0]
 [0 1 0 1 0 1 0 1]
 [0 0 0 0 0 0 0 0]
 [0 1 0 1 0 1 0 1]
 [0 0 0 0 0 0 0 0]
 [0 1 0 1 0 1 0 1]
 [0 0 0 0 0 0 0 0]]

上面实现的是矩阵中从第‘0’行开始每隔1行,从第‘1’列开始,每隔1列 赋值为1


将上面两个操作合起来,我们将得到一个棋盘式的8x8矩阵:

import numpy as np
z = np.zeros((8,8))
z[1::2,::2] = 1
z[::2,1::2] = 1
[[0 1 0 1 0 1 0 1]
 [1 0 1 0 1 0 1 0]
 [0 1 0 1 0 1 0 1]
 [1 0 1 0 1 0 1 0]
 [0 1 0 1 0 1 0 1]
 [1 0 1 0 1 0 1 0]
 [0 1 0 1 0 1 0 1]
 [1 0 1 0 1 0 1 0]]

关键理解点: z[1::2,::2] = 1 表达中’1:‘要从索引1行开始切片,如果是’1:n’则表示从索引1行到索引n行,如果是’1::2’,则表示从索引1行到最后一行,每2行进行切片,对列进行切片时也是相同的处理。

总结:不同维度用逗号隔开,取切片要用冒号,多维数组取步长要用冒号

参考:
1.菜鸟教程:https://www.runoob.com/numpy/numpy-ndexing-and-slicing.html
2.廖雪峰:https://www.liaoxuefeng.com/wiki/1016959663602400/1017269965565856
3.CSDN:https://blog.csdn.net/brucewong0516/article/details/79186126?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值