Python 创建一个求和到特定数字的数组?
我正在使用python。我试图创建一个和一定数量的数组,但我希望数组的长度由我选择。你知道怎么做吗? 例如,我想要一个和为1的数组。 所以[.25,.25,.25,.25],但是我希望数组中的数字是随机的,我希望数组的长度是98。Python 创建一个求和到特定数字的数组?,python,numpy,Python,Numpy,我正在使用python。我试图创建一个和一定数量的数组,但我希望数组的长度由我选择。你知道怎么做吗? 例如,我想要一个和为1的数组。 所以[.25,.25,.25,.25],但是我希望数组中的数字是随机的,我希望数组的长度是98。 有人能帮忙吗?这里有一个简单的实现,它通过构建98个随机数的数组,找到它们的和,然后将每个数除以和,使整个数组归一化为1 import random # generate a random array of 98 numbers numbers = [random.
有人能帮忙吗?这里有一个简单的实现,它通过构建98个随机数的数组,找到它们的和,然后将每个数除以和,使整个数组归一化为1
import random
# generate a random array of 98 numbers
numbers = [random.random() for _ in range(98)]
print(numbers)
# [0.2378205280188267, 0.08942239291741982, ...]
print(sum(numbers))
# 48.8051742287
# normalise the array to sum to 1
normalised = [r / sum(numbers) for r in numbers]
print(normalised)
# [0.004872854810521523, 0.0018322318141581963, ...]
print(sum(normalised))
# 1.0
但是如果你正在做大量的计算,你可能应该考虑使用NUMPY。 编辑:与上述代码相同的代码,但更易于阅读且无需理解列表:
# build a list/array of random numbers
numbers = []
for _ in range(98):
numbers.append(random.random())
# get the sum of the array
print(sum(numbers))
# 48.8051742287
# normalise the original list using the sum
normalised = []
for n in numbers:
normalised.append(n / sum(numbers))
print(sum(normalised))
# 1.0
除了最后一个数字之外,所有的数字都是随机的,听起来你在追求正常化。这就是你想要的吗?