我正在实现一个使用 Python Numpy 包的程序。我正在尝试修改数组的元素,以便我只需将elem[i][j]
其设置为elem[i][j]/10
. 但是,我不断收到某种截断,其中元素在操作后设置为 0。这是我的代码:
for word in allwords:
for x in xrange(wordarrays[word].shape[0]):
for y in xrange(wordarrays[word].shape[1]):
wordarrays[word][x][y]=wordarrays[word][x][y]/10
在我的代码中,wordarrays 是一个从字符串到数组的字典。当我简单地打印 wordarrays[word][x][y]/10 时,截断不是问题,浮点除法按预期进行。我已经检查过了,数组都有 dtype=float64 所以这不应该是问题。我还尝试使用nditer通过此处介绍的方法修改数组
是什么导致了这种截断?谢谢您的帮助!
提供有关我不寻常的输出的更多详细信息。划分前wordarray['chen']的条目如下:
[[2. 3.]
[4. 1.]]
除以 10(或 10.0)后,我得到相同数组的结果:
[[1.01000000e-04 1.20000000e-05]
[1.11001000e-01 1.00000000e-06]]
这似乎没有任何意义。我认识到双 for 循环并不是 Python 式的,但这是我在使用 np.nditer 进行迭代时想尝试的方法不起作用。为了解决一些评论,我确实尝试过除以 10 和 10.0。结果是一样的。
此外,当我执行相同的操作而不替换数组的条目并只打印除法时,即:
for word in allwords:
for x in xrange(wordarrays[word].shape[0]):
for y in xrange(wordarrays[word].shape[1]):
print wordarrays[word][x][y]/10
我得到了预期的结果,即:
[[0.2 0.3]
[0.4 0.1]]