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

Python如何给列表或numpy数组多元素赋值 每行随机设5个0-10值

实现方案

你可以直接用numpy的随机索引生成能力完成需求,参考代码如下:

import numpy as np

# 你原有的初始化代码,这里直接用np.zeros生成全0数组效率更高
num = 782
sol = 4
pop_size = [sol, num]
initial_population_1 = np.zeros(pop_size)

n_select = 5 # 每行需要选中的元素数量
for row_idx in range(sol):
    # 为当前行生成5个不重复的随机列索引
    random_cols = np.random.choice(num, size=n_select, replace=False)
    # 给对应位置赋值0~10之间的随机数
    initial_population_1[row_idx, random_cols] = np.random.uniform(low=0.0, high=10.0, size=n_select)

如果需要处理更大规模的数组,想要避免循环、用向量化写法提升效率,可以参考以下实现:

n_select = 5
# 一次性生成所有行的随机列索引,shape为(4,5)
all_random_cols = np.array([np.random.choice(num, size=n_select, replace=False) for _ in range(sol)])
# 生成对应数量的0~10随机数
random_values = np.random.uniform(low=0.0, high=10.0, size=(sol, n_select))
# 批量完成赋值
initial_population_1[np.arange(sol)[:, None], all_random_cols] = random_values

效果验证

你可以通过以下代码检查赋值结果是否符合要求:

# 检查每行的非0元素数量,输出应为[5 5 5 5]
print(np.count_nonzero(initial_population_1, axis=1))
# 检查所有非0元素是否在0~10范围内,输出应为True
print((initial_population_1[initial_population_1>0].min() > 0) & (initial_population_1[initial_population_1>0].max() <10))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:39:03