【问题标题】:Assigning values to a position in a numpy array not modifying the array将值分配给 numpy 数组中的位置而不修改数组
【发布时间】:2018-07-07 03:37:14
【问题描述】:

当我使用数组时如何得到准确的值?为什么结果是 array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) 而不是 0.7?

overlap= np.array([0]*10)
tempi = np.zeros(10)
for i in range(10):
    for j in range(10):
        tempi[j] = 0.7;
    overlap[i] = max(tempi)
    print(max(tempi))

overlap

【问题讨论】:

    标签: python arrays python-3.x numpy type-coercion


    【解决方案1】:

    overlap 被(隐式)声明为整数数组。当您将浮点数分配给整数数组中的位置时,它们会被截断(隐式强制转换为整数)。

    您想要做的是声明overlap 拥有dtypefloat -

    overlap = np.array([0] * 10, dtype=np.float)
    

    或者,

    overlap = np.array([0.] * 10)
    

    再次运行它,你会得到你所期望的。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 2017-11-15
    • 2013-08-28
    相关资源
    最近更新 更多