You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何扩展numpy数组(实现步长切片的逆操作)?

从步长切片后的NumPy数组还原原数组

假设我们有切片得到的数组b,想要还原出原数组a(其中原数组非切片位置填充0),可以用以下几种简洁的方法:

方法一:初始化数组后切片赋值

这是最直观且符合切片逆操作逻辑的方法:

import numpy as np

# 已知切片后的数组b
b = np.array([[1, 2], [3, 4]])

# 初始化与原数组a同形状的数组,填充指定值(这里是0)
a = np.zeros((3, 3), dtype=b.dtype)

# 通过切片将b的值放回对应位置
a[::2, ::2] = b

执行后a会还原为:

array([[1, 0, 2],
       [0, 0, 0],
       [3, 0, 4]])

方法二:利用索引赋值

如果需要更灵活的索引控制,可以先获取原数组中需要填充的位置索引,再赋值:

import numpy as np

b = np.array([[1, 2], [3, 4]])
# 获取原数组中对应切片位置的扁平索引
flat_indices = np.arange(9).reshape(3, 3)[::2, ::2].flatten()

# 初始化扁平数组并赋值
a_flat = np.zeros(9, dtype=b.dtype)
a_flat[flat_indices] = b.flatten()

# 重塑为原形状
a = a_flat.reshape(3, 3)

注意事项

  • 只有当原数组非切片位置的填充值已知(如示例中的0)时,才能完成还原——因为切片操作会丢弃非切片位置的原始数据,仅保留切片位置的值。
  • 如果原数组的切片规则更复杂(比如起始索引不是0、步长不是2),只需对应调整赋值时的切片参数即可。

内容的提问来源于stack exchange,提问作者trivicious

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:50:44