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

Python中如何基于不同长度的两个向量生成目标向量?

解决方案:按规则生成目标numpy数组

首先纠正你代码中的数组初始化错误——np.array() 需要传入可迭代对象(比如列表),正确的初始化代码如下:

import numpy as np
arr1 = np.array([1, 2, 3, 4, 5, 6])
arr2 = np.array([1, 1, 0, 1, 1, 0, 0, 0, 1, 1])

方法一:索引定位填充

这是最直观的实现方式,步骤清晰,适合新手理解:

# 创建与arr2长度相同、全为-9的数组
arr3 = np.full_like(arr2, -9)
# 获取arr2中所有值为1的位置索引
ones_positions = np.where(arr2 == 1)[0]
# 取arr1和1的数量中较小的长度,避免索引越界
fill_count = min(len(arr1), len(ones_positions))
# 将arr1的元素依次填充到arr2中1对应的位置
arr3[ones_positions[:fill_count]] = arr1[:fill_count]

print(arr3)
# 输出结果:[ 1  2 -9  3  4 -9 -9 -9  5  6]

方法二:累积计数映射

利用numpy的累积求和功能,直接生成arr1的索引映射,代码更简洁:

# 计算每个位置对应的arr1索引(arr2中1的累积计数减1)
arr1_indices = np.cumsum(arr2) - 1
# 初始化arr3为全-9
arr3 = np.full_like(arr2, -9)
# 筛选出索引有效(小于arr1长度)的位置,填充arr1的对应元素
valid_mask = arr1_indices < len(arr1)
arr3[valid_mask] = arr1[arr1_indices[valid_mask]]

print(arr3)
# 输出结果:[ 1  2 -9  3  4 -9 -9 -9  5  6]

两种方法都能处理arr1长度小于arr2的情况——当arr1的元素用完后,arr2中剩余的1位置会保持-9。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 20:25:06