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

如何将任意长度一维numpy数组的左侧内容镜像到右侧

你可以通过统一的切片逻辑省略奇偶分支判断,实现更简洁的实现:
核心思路是:无论数组长度是奇数还是偶数,都先取包含中点(奇数长度)的左半段,反转后截取与右半段长度一致的尾部赋值给右半段即可。

实现代码

import numpy as np

def mirror_left(arr, modify_original=False):
    """
    将一维numpy数组左半部分镜像到右半部分
    :param arr: 输入一维numpy数组
    :param modify_original: 是否修改原数组,默认False返回新数组
    """
    res = arr if modify_original else arr.copy()
    n = res.size
    mid = (n + 1) // 2
    res[mid:] = np.flip(res[:mid])[-(n - mid):]
    return res

测试验证

a = np.array([1, 2, 3, 4, 5])
b = np.array([1, 2, 3, 4])
c = np.array([1, 2, 3, 4, 5, 6])

print(mirror_left(a))  # 输出 [1 2 3 2 1]
print(mirror_left(b))  # 输出 [1 2 2 1]
print(mirror_left(c))  # 输出 [1 2 3 3 2 1]

如果需要兼容普通Python列表,也可以用原生语法实现,不需要依赖numpy:

def mirror_left_list(lst):
    n = len(lst)
    mid = (n + 1) // 2
    return lst[:mid] + lst[:mid][::-1][-(n - mid):]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:06:02