【发布时间】:2016-08-31 19:20:25
【问题描述】:
import numpy as np
from numpy.random import randn
N = 100000
counter = 0
for i in randn(N):
if i < 1 and i > -1:
counter = counter + 1
counter/N
代码每次都输出零。
我将 100000 更改为 100000.0,它给了我 68%,但告诉我以下信息:
anaconda/lib/python2.7/site-packages/ipykernel/main.py:5: VisibleDeprecationWarning:使用非整数而不是 整数以后会报错”
你能帮我弄清楚发生了什么吗?
【问题讨论】:
-
你能格式化代码吗?
-
那是因为integer division。当您使用浮点数时,它可以正常工作,但这不是 randn 的合适输入。因此,要么使用 Python 3 的除法(检查链接答案以导入该部分),要么将最后一行更改为
counter/float(N)。 -
只是一个友好的建议,您可以将第 n°7 行替换为
counter += 1 -
您没有返回任何内容。您的缩进很奇怪(第一行之后的所有内容都缩进了太多次),这可能会导致问题。
-
关于 VisibleDeprecationWarning - 它出现是因为函数 numpy.random.randn 不喜欢接收浮点参数。
标签: python loops numpy random counter