【问题标题】:VisibleDeprecationWarning when creating random array of size 2e5创建大小为 2e5 的随机数组时出现 VisibleDeprecationWarning
【发布时间】:2017-05-15 17:14:16
【问题描述】:

我将 var1、var2 定义为以下数组:

N = 2e5
var1 = np.array(50 * np.random.normal(size=N) + 0.1)
var2 = np.array(0.01 * np.random.normal(size=N) - 300)

在 python 中运行这 3 个语句时,我收到以下两个警告:

__main__:7:VisibleDeprecationWarning:使用非整数而不是整数,以后会报错

__main__:8:VisibleDeprecationWarning:使用非整数而不是整数,以后会报错

我该如何纠正这个问题?

【问题讨论】:

  • N = int(2e5)?
  • 您是否打算将N 设为整数? e 表示法总是浮动。
  • 是的! N 旨在为整数。可能是我写 N=20000 等等?

标签: python arrays numpy scipy


【解决方案1】:

size 必须是整数。您使用了N=2e5,但这是一个浮点数,您可以改用2 * 10**5

>>> type(2e5)
float

>>> type(2*10**5)
int

或者以其他方式将值转换为整数。

【讨论】:

  • int 调用相比,这具有在数字不能完全表示为浮点数时不会丢失精度的优点。
【解决方案2】:

您不能使用浮点数或双精度数作为索引,将结果转换为 Int:

import numpy as np

N = int(2e5)
var1 = np.array(50*np.random.normal(size=N) + 0.1)
var2 = np.array(0.01*np.random.normal(size=N) - 300)

【讨论】:

    猜你喜欢
    • 2012-01-22
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    相关资源
    最近更新 更多