【发布时间】:2015-08-13 12:03:48
【问题描述】:
当我执行以下代码时,我使用的是 python 2.7.3:
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
a = a / float(2**16 - 1)
print a
这将导致以下输出:
>> array([[1.52590219e-05, 3.05180438e-05, 4.57770657e-05],
>> [6.10360876e-05, 7.62951095e-05, 9.15541314e-05]])
完全符合预期,但是当我执行以下代码时:
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
a /= float(2**16 - 1)
print a
我得到以下输出:
>> array([[0, 0, 0],
>> [0, 0, 0]])
我希望得到与上一个示例相同的输出,但我不明白不同的输出,这似乎是使用 a /= float(2**16 - 1) 与 a = a / float(2**16 - 1) 的结果。
【问题讨论】:
-
[我重新打开这个。它与最初提议的副本有关,但该问题的答案都没有解决所涉及的 dtype 问题。某处可能还有另一个重复项,但不是那个。]
-
@DSM 同意,链接的问题实际上并没有解释这里发生了什么。它解释了为什么可能会出现不同的结果,而不是为什么会在这种情况下发生。
标签: python arrays numpy integer-division in-place