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

如何无重复地在25×25的Numpy零数组中随机替换指定数量的0为1

如何在25×25的Numpy零数组中随机指定数量的位置替换为1(无重复)

我创建了一个25×25的Numpy数组,初始值全部为0。希望根据用户指定的数量(范围为1到625),将数组中的0随机替换为1,且需避免重复替换同一位置,请问该如何实现?

生成初始数组的代码

import numpy as np
arr = np.zeros((25,25), dtype=int)

预期效果(以4×4数组为例)

替换前:

0,0,0,0
0,0,0,0
0,0,0,0
0,0,0,0

替换1个0后(随机位置):

0,0,0,0
0,0,1,0
0,0,0,0
0,0,0,0

替换16个0后(全部替换):

1,1,1,1
1,1,1,1
1,1,1,1
1,1,1,1

解决方案

可以利用Numpy的随机索引特性实现,核心是生成不重复的线性索引来定位需要替换的位置,具体代码如下:

import numpy as np

# 创建25×25零数组
arr = np.zeros((25, 25), dtype=int)
# 用户指定的替换数量(范围1-625,这里以50为例)
replace_count = 50

# 生成指定数量的唯一线性索引
total_elements = arr.size
unique_indices = np.random.choice(total_elements, replace_count, replace=False)

# 通过展平数组赋值,将指定位置设为1
arr.flat[unique_indices] = 1

# 验证替换结果(可选)
print(f"替换后数组中1的数量:{np.sum(arr)}")
print(arr)

代码说明

  • arr.flat:将二维数组展平为一维可迭代对象,支持直接通过线性索引修改原数组的对应位置,无需手动转换二维坐标。
  • np.random.choice(..., replace=False):确保生成的索引完全唯一,避免重复修改同一位置。
  • 若需要固定随机结果(方便调试),可以在生成索引前添加np.random.seed(xxx)设置随机种子。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:25:26