You need to enable JavaScript to run this app. Python NumPy 无循环按列尾值规则向多维数组追加行元素
优惠活动
大模型
产品
解决方案
定价
更多

Python NumPy 无循环按列尾值规则向多维数组追加行元素

NumPy数组条件追加行实现方案

实现思路

  • 直接提取order数组第一列的末尾元素值作为判断依据
  • 预定义两种场景对应的追加行,以0/1的取值顺序建立行映射池,通过索引直接匹配对应行,无需分支判断
  • 使用np.vstack完成行的垂直堆叠,全程不使用for循环、不使用列表推导式,符合约束要求

完整实现代码

import numpy as np

order = np.array([[     0,  38846],
                  [     1,  51599],
                  [     0,  51599],
                  [     1,  52598],
                  [     0, 290480],
                  [     1, 335368],
                  [     0, 335916]])

# 获取第一列最后一个元素的取值
last_val = order[-1, 0]
# 按取值顺序预定义可追加的行:索引0对应last_val=0的场景,索引1对应last_val=1的场景
append_candidates = np.array([[1, 10000], [2, 20000]])
# 按取值索引取出对应行,保持二维格式以适配堆叠要求
append_row = append_candidates[[last_val]]
# 垂直堆叠完成追加
order = np.vstack([order, append_row])

print(order)

场景验证

  • 当第一列末尾值为0(即给定的初始数组场景):输出结果与预期完全匹配
[[     0  38846]
 [     1  51599]
 [     0  51599]
 [     1  52598]
 [     0 290480]
 [     1 335368]
 [     0 335916]
 [     1  10000]]
  • 当第一列末尾值为1(将初始数组最后一行修改为[1, 335916]的场景):输出结果与预期完全匹配
[[     0  38846]
 [     1  51599]
 [     0  51599]
 [     1  52598]
 [     0 290480]
 [     1 335368]
 [     1 335916]
 [     2  20000]]

补充说明

  • 映射索引的实现方式可直接拓展,后续如果有更多追加规则,只需按顺序在append_candidates数组中补充对应行即可
  • 若需要修改原数组的内存引用,可使用np.concatenate配合out参数实现原地修改,无需新建数组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 09:15:11