我正在实现一个使用Python Numpy包的程序。我试图修改一个数组的元素,这样我只需取elem[i][j]
并将其设置为elem[i][j]/10
。不过,我在操作后将元素设置为0的情况下不断得到某种截断。这里是我的代码:Numpy截断?
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 [“陈”]中的条目,如下所示:
[[2. 3.]
[4. 1.]]
由10(或10.0)我得到这个对于相同的阵列划分后:
[[1.01000000e-04 1.20000000e-05]
[1.11001000e-01 1.00000000e-06]]
哪个没有按似乎没有任何意义。我认识到,双循环不是pythonic,但这是我认为与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]]
你是什么意思,截断?你能说明你的问题吗?你确定它不是一个显示问题(即底层数据实际上没有被截断)吗? –
注意:使用循环并不是真正的numpythonic,你应该可以用'wordarrays [word]/= 10'获得相同的结果(假设就地分区对你的'dtype'起作用) –
你确定'allwords'包含唯一的单词元素? – heltonbiker