我正在实现一个使用pythonnumpy包的程序。我试图修改数组的元素,这样我就只需取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']的条目如下:
^{pr2}$除以10(或10.0)后,我得到同一数组的结果:
[[1.01000000e-04 1.20000000e-05]
[1.11001000e-01 1.00000000e-06]]
这似乎没有任何意义。我认识到double for循环并不是那种python类型,但这是我在迭代时想尝试的方法np.N指示器没用。为了回答一些评论,我试着用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]]
我想这是因为你要除以一个整数,所以要执行整数运算。尝试将
10
更改为10.0
。在例如
这样做可以显著提高您的绩效:
相关问题 更多 >
编程相关推荐