我有2个整数列表。我想重复另一个列表成员的时间。我尝试使用zip()函数以及以下代码,但遇到相同的错误
“ TypeError:'int'对象不可调用”
这是我的代码-
def predict_from_distribution(distribution, range):
classes = [0, 1, 2, 3, 4, 5]
summation = np.cumsum(distribution)
results = []
uniform_samples = np.random.uniform(0, 1, range)
iterations = np.multiply(distribution, len(uniform_samples))
iterations = [int(num) for num in iterations]
for i in range(len(classes)):
for x in range(iterations[i]):
results.append(classes[i] * x)
return print(results)
predict_from_distribution([0.2, 0.1, 0.25, 0.15, 0.25, 0.05], 50)
答案 0 :(得分:4)
通过使用range
作为参数名称,已使用值50
覆盖了内置方法range
。
结果,现在调用range(...)
就像写50(...)
一样,这就是为什么收到错误消息TypeError: 'int' object is not callable
的原因。
如果您使用其他名称作为参数名称(例如R
),则您的代码可以正常工作。
import numpy as np
def predict_from_distribution(distribution, R):
classes = [0, 1, 2, 3, 4, 5]
summation = np.cumsum(distribution)
results = []
uniform_samples = np.random.uniform(0, 1, R)
iterations = np.multiply(distribution, len(uniform_samples))
iterations = [int(num) for num in iterations]
for i in range(len(classes)):
for x in range(iterations[i]):
results.append(classes[i] * x)
return print(results)
predict_from_distribution([0.2, 0.1, 0.25, 0.15, 0.25, 0.05], 50)
答案 1 :(得分:0)
顺便说一句,这就是我试图通过代码实现的目标,即,当实验重复“总”次数时,可以预测有偏向的骰子的类别。 (不使用任何numpy随机选择或其他分布)
将numpy导入为np
defpredict_from_distribution(总分布):
classes = [0, 1, 2, 3, 4, 5]
summation = int(sum(distribution))
if not summation == 1:
print('Error : The sum of the probabilities do not add up to 1')
results = []
iterations = np.multiply(distribution, total)
iterations = [int(num) for num in iterations]
for i in range(len(classes)):
for x in range(iterations[i]):
results.append(classes[i])
return print(results)
predict_from_distribution([0.2,0.1,0.25,0.15,0.25,0.05],50)