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

非唯一键操作向量化:基于指定行索引生成目标输出向量

实现指定索引赋值的NumPy数组生成

这事儿用NumPy分分钟搞定,给你两种实用的实现方式,根据你的需求选就行:

基础实现(最直观)

先创建一个和test形状完全一致的全0数组,然后直接给指定索引位置赋值,代码如下:

import numpy as np

rows = np.array([3, 4])
test = np.array([1, 3, 3, 4, 5])
data = np.array([-1, 2])

# 生成和test同形状的全0数组
output = np.zeros_like(test)
# 给rows指定的索引位置赋值对应data的值
output[rows] = data

print(output)  # 输出结果: [ 0  0  0 -1  2]

逻辑说明

  • np.zeros_like(test)会生成一个和test维度、数据类型完全匹配的全0数组,保证输出和原始数据形状一致;
  • 利用NumPy的索引特性,直接用rows数组作为索引,把data里的对应值批量赋值到output的指定位置;
  • 未被rows覆盖的索引位置,保持初始的0值,完全符合你的需求。

进阶场景:处理重复索引(可选)

如果你的rows数组里有重复的索引(比如rows = np.array([3,3])),而你希望重复位置的data值是累加而非覆盖的话,可以用np.add.at来实现:

output = np.zeros_like(test)
np.add.at(output, rows, data)

比如rows = [3,3]、data = [-1,2]时,output[3]会是-1 + 2 = 1,而不是被最后一个值覆盖。

核心规则回顾

简单来说,输出数组的第i个元素遵循以下逻辑:

  • 如果i是rows数组里的索引,就取data中对应位置的值;
  • 反之,该位置保持0值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:46:07