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

如何同时使用多组逻辑索引为Numpy数组不同位置列赋值

实现方法

你可以通过以下两种常用方式实现多组布尔索引同时赋值:

方法1:遍历配对赋值(写法简洁,几乎无性能损耗)

直接将索引和对应的赋值数组配对遍历,单次循环完成所有赋值操作,代码如下:

import numpy as np

# 初始化变量
x = np.empty([2,3])
indx1 = [False,False,True]
set1 = np.array([[-1],[-1]])
indx2 = [True,True,False]
set2 = np.array([[1,2],[1,2]])

# 一次性完成多组赋值
for idx, val in zip([indx1, indx2], [set1, set2]):
    x[:, idx] = val

运行后x的输出和你分开两次赋值的结果完全一致:

array([[1., 2., -1.],
       [1., 2., -1.]])

方法2:完全向量化一次性赋值(无循环,适合多组索引的场景)

先把布尔索引转换为列序号并拼接,同时拼接对应赋值数组,直接一次性写入:

# 提取所有待赋值的列序号
col_indices = np.concatenate([np.where(indx1)[0], np.where(indx2)[0]])
# 拼接对应赋值数组
value_arr = np.concatenate([set1, set2], axis=1)
# 一次性完成赋值
x[:, col_indices] = value_arr

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 17:03:01