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

如何按指定规则将Numpy 5x8数组转换为10x4数组?

解决Numpy数组的自定义形状重组问题

核心实现代码

import numpy as np

# 原始5x8数组
arr = np.array([
    [ 43, 153,  39,  40, 157, 116,  78, 165],
    [108, 182,  42, 244,  28,  67,  59, 176],
    [ 44,  81, 236, 229, 102,  32, 176, 237],
    [143, 218,  78,  77, 237, 194, 135, 251],
    [247,  37, 143,  89, 100, 188, 156, 206]
])

# 构造前5行:原第0-1列 + 原第4-5列
top_section = np.hstack([arr[:, :2], arr[:, 4:6]])
# 构造后5行:原第2-3列 + 原第6-7列
bottom_section = np.hstack([arr[:, 2:4], arr[:, 6:8]])

# 上下拼接得到10x4结果
final_arr = np.vstack([top_section, bottom_section])

思路解析

  1. 解决报错根源:你之前遇到的operands could not be broadcast together错误,是因为直接把(5,2)形状的列数据往(10,4)数组里赋值,两者形状完全不兼容。Numpy要求赋值操作的左右两边必须形状匹配,或满足广播规则,这里显然不满足。

  2. 分块拼接更高效:

    • 先用hstack(水平拼接)把需要的列组合成5x4的子数组:前半部分保留原前两列,搭配第4-5列;后半部分取原第2-3列,搭配第6-7列。
    • 再用vstack(垂直拼接)把两个5x4的子数组堆叠成最终的10x4数组。
  3. 适配图像处理场景:这种向量级操作是Numpy的核心优势,比循环逐个赋值效率高得多,完全适配灰度图这类像素矩阵的重组需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:42:24