gpt4 book ai didi

python - 在 NumPy 数组中随机增长值

转载 作者:太空宇宙 更新时间:2023-11-04 05:48:10 24 4
gpt4 key购买 nike

我有一个程序,它采用一些大型 NumPy 数组,并基于一些外部数据,通过将 1 添加到随机选择的单元格来增加它们,直到数组的总和等于外部数据。简化和较小的版本如下所示:

import numpy as np
my_array = np.random.random_integers(0, 100, [100, 100])
## Just creating a sample version of the array, then getting it's sum:
np.sum(my_array)
499097

因此,假设我想增加数组直到它的总和为 1,000,000,并且我想通过重复选择一个随机单元格并将其加 1 直到达到该总和来实现,我正在做类似的事情:

diff = 1000000 - np.sum(my_array)
counter = 0
while counter < diff:
row = random.randrange(0,99)
col = random.randrange(0,99)
coordinate = [row, col]
my_array[coord] += 1
counter += 1

其中 row/col 组合返回数组中的随机单元格,然后该单元格增长 1。它重复直到它向随机单元格添加 1 的次数 == 原始单元格之间的差异数组的总和和目标总和 (1,000,000)。

但是,当我在运行后检查结果时 - 总和总是关闭。在这种情况下,在使用与上面相同的数字运行它之后:

np.sum(my_array)
99667203

我无法弄清楚是什么导致了这种巨大的差异。是否有更 pythonic 的方式来解决这个问题?

最佳答案

my_array[coordinate] 不符合您的预期。它选择多行并将 1 添加到所有这些条目。您可以简单地使用 my_array[row, col] 代替。

你可以简单地写这样的东西:

for _ in range(1000000 - np.sum(my_array)):
my_array[random.randrange(0, 99), random.randrange(0, 99)] += 1

(如果使用 Python 2.x,则使用 xrange 而不是 range)

关于python - 在 NumPy 数组中随机增长值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31348617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com