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

如何用Numpy将数组中500个随机元素从0替换为1?

实现100×100数组中随机500个0替换为1的Numpy方案

方法一:基于循环的补全实现

如果必须通过循环完成需求,可以用集合避免重复选中同一位置,再遍历替换:

import numpy as np

# 创建100×100的全0二维数组
arr = np.zeros((100, 100), dtype=int)

# 补全循环部分:生成500个不重复的随机坐标
selected_positions = set()
while len(selected_positions) < 500:
    row = np.random.randint(0, 100)
    col = np.random.randint(0, 100)
    selected_positions.add((row, col))

# 遍历坐标完成替换
for (row, col) in selected_positions:
    arr[row, col] = 1

集合的特性保证了每个坐标只被选中一次,避免重复替换同一个元素。

方法二:更高效的Numpy矢量操作(无需循环)

Numpy提供了更优的实现方式,完全不需要手动写循环,性能远高于循环方案:

import numpy as np

arr = np.zeros((100, 100), dtype=int)
# 从数组所有元素中随机挑选500个不重复的扁平索引
flat_indices = np.random.choice(arr.size, 500, replace=False)
# 通过扁平索引直接赋值
arr.flat[flat_indices] = 1

arr.flat将二维数组转为一维视图,np.random.choice直接生成不重复索引,一步完成替换操作。

内容的提问来源于stack exchange,提问作者Aksel Andrè Wiik Martinsen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:35:33