Numpy如何将形如:,:width,:的索引标识存储到变量中
实现方法
完全可以实现,Python中数组的下标索引本质是传入一个元组,你可以把切片对象预先存入元组变量后再统一使用:
- 单个冒号
:对应内置的slice(None)对象 :width形式的切片对应slice(None, width)对象
对应你的需求的实现代码如下:
# 按条件生成索引元组 if case1: if ncomp == 1: indices_vec = (slice(None), slice(None, width), slice(None)) else: indices_vec = (slice(None), slice(None, width), slice(None), slice(None)) elif case2: if ncomp == 1: indices_vec = (slice(None), slice(None, width)) else: indices_vec = (slice(None), slice(None, width), slice(None)) # 统一执行赋值操作 A[indices_vec] = B[indices_vec]
如果想要简化写法,可以提前定义通用全切片变量减少重复代码:
s = slice(None) # 等价于单个冒号: if case1: indices_vec = (s, slice(None, width), s) if ncomp == 1 else (s, slice(None, width), s, s) elif case2: indices_vec = (s, slice(None, width)) if ncomp == 1 else (s, slice(None, width), s) A[indices_vec] = B[indices_vec]
该写法对Numpy多维数组、Python原生多维列表都可正常生效。
内容的提问来源于stack exchange,提问作者sramij
相关产品推荐
相关产品推荐

