Python Numpy 如何反转切片操作 将修改后的切片元素放回原数组对应位置
切片逆转换实现方案
你不需要用到复杂的as_strided方法,直接用和切片操作完全一致的索引赋值即可实现需求,核心逻辑是numpy对相同索引规则的切片赋值会自动匹配原始位置。
最简实现代码
import numpy as np a = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) b = 2 * a[::-1, ::2] # 初始化和a形状一致的全0数组 result = np.zeros_like(a) # 用和切片完全相同的索引直接赋值 result[::-1, ::2] = b print(result)
运行输出和你预期的结果完全一致:
[[ 2 0 6 0] [10 0 14 0] [18 0 22 0]]
可选的flip实现方式
如果你想显式处理axis0的翻转逻辑,也可以先翻转b再赋值给对应列,效果完全相同:
result = np.zeros_like(a) # 先把b沿第0维翻转,再赋值给步长为2的列 result[:, ::2] = np.flip(b, axis=0)
原数组修改方案
如果你不需要保留原数组的原始值,想直接修改a得到结果,操作如下:
# 先把原数组所有元素置0 a[...] = 0 # 直接赋值到对应切片位置 a[::-1, ::2] = b
内容的提问来源于stack exchange,提问作者Sam-gege
相关产品推荐
相关产品推荐

