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

如何动态调整间隔行数,在NumPy数组A中每隔指定行数插入两次数组B

如何动态调整间隔行数,在NumPy数组A中每隔指定行数插入两次数组B

嘿,我完全get到你的需求了——你现在已经实现了每隔2行插入两次B,但希望这个间隔行数能灵活调整,不管是现在的2,还是以后要改成50都能轻松搞定对吧?咱们把代码改成动态通用的版本,以后改参数就行,不用动核心逻辑~

首先,核心思路就是把固定的间隔值换成一个可配置的变量,然后循环的时候按照这个变量来切分原数组A,每次切分后把对应的A片段和两次B拼起来,最后再合并所有部分就行。而且我还会给你加个小优化,让插入B的次数也能动态调整,更灵活!

动态调整间隔的实现代码

import numpy as np

# 你的原始数组
A = np.array([
    [4.752735, 1.16801, -3.9976401, -0.319121, -7.4322705, -3.8692],
    [5.2125, 1.165454, -3.99143, -0.318649, -7.43615, -4.12229],
    [5.16795, 1.083616, -3.9877, -0.315453, -7.43191, -3.97633],
    [4.660315, 0.89965, -3.98708, -0.321073, -7.41803, -3.69156],
    [4.839925, 0.93606997, -3.9822102, -0.315018, -7.41289, -3.79918],
    [4.711875, 1.143996, -3.98545, -0.304904, -7.4152703, -3.90752]
])

B = np.array([[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]])

# 这里就是你要动态调整的参数!想改间隔行数直接改这个值
interval = 2  # 比如改成50,就是每隔50行插入两次B
result = []

for i in range(0, A.shape[0], interval):
    # 取出当前间隔内的A的行片段
    chunk = A[i:i+interval]
    # 把片段、两次B依次加入结果列表
    result.extend([chunk, B, B])

# 最后把所有片段垂直堆叠成最终数组
result = np.vstack(result)
print(result)

额外优化:连插入B的次数也能动态调整

如果以后你不仅想改间隔行数,还想改每次插入B的次数(比如插3次而不是2次),可以再加一个参数,代码会更通用:

import numpy as np

A = np.array([...])  # 你的原始A数组
B = np.array([[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]])

# 两个可配置参数,想怎么改就怎么改
interval = 2       # 每隔多少行插入一次
insert_times = 2   # 每次要插入几次B

result = []
for i in range(0, A.shape[0], interval):
    chunk = A[i:i+interval]
    # 用列表乘法快速生成要插入的B的次数
    result.extend([chunk] + [B]*insert_times)

result = np.vstack(result)
print(result)

为啥这么改更好?

  • 完全动态:只需要修改interval和insert_times两个参数,就能实现不同的插入需求,不用动循环逻辑。
  • 效率更高:用列表先收集所有片段,最后再一次性vstack,比你原来每次循环都vstack要高效得多——毕竟每次vstack都会重新分配内存,数组越大差别越明显。
  • 兼容性强:不管A的总行数是不是interval的整数倍,最后一段哪怕行数不足间隔数,代码也能正常处理,不会报错。

备注:内容来源于stack exchange,提问作者stack offer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 11:57:59