【问题标题】:creating a graph using python matplotlib from range(1,100000)使用范围(1,100000)中的python matplotlib创建图形
【发布时间】:2021-10-11 17:56:48
【问题描述】:

使用从 1 到 100000 的 numpy 作为 x 和 y = x*x 的值创建数组

x = np.arange(1,100000)
y = x*x

但是当检查 y 值时有 31k+ 负值

count = 0
for i in y:
    if i < 0:
        count+=1
print(count)

31612

https://www.linkedin.com/posts/sandeep-agrawal-3b8857196_python-python3-pythonlearning-activity-6852679546345521152-cG-a

【问题讨论】:

    标签: python python-3.x numpy integer-overflow


    【解决方案1】:

    您可能有整数溢出,请尝试在提高功率之前将x 转换为浮点数:

    x = np.arange(1,100000)
    y = x**10
    
    sum(y < 0)
    49760
    

    转换为浮点数:

    x = np.arange(1,100000).astype(float)
    y = x**10
    
    sum(y < 0)
    0
    

    【讨论】:

    • 嗯,很有趣。我正在使用较旧的 numpy。最新版本中可能添加了一些自动广播。 @Murali
    • 我无法在我的机器上重现此结果。在这两种情况下都是 0
    • @Murali 您可能运行的是 64 位 numpy 版本,而 Psidom 运行的是 32 位版本。
    • @Murali 实际上这个例子不能在 1.21.2 中重现。大概。由于使用了更大的 int 类型。如果你尝试y = x ** 10,你仍然会遇到这个问题。
    • @JohanC 是的,我使用的是 64 位 Numpy 版本
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多