我试图编写一个相当复杂的Python程序,但基本上已经完成了。我在一个小细节上遇到了麻烦。在
有问题的代码部分如下:
newData = kmeans.sampleNewData(200, means, covariances, priors)
newData = newData.astype(str)
...loops and logic and stuff...
newData[i, j] = columnsList[j][(indexList[j]).index(closestFit)]
基本上,newData
是一个大小为200x4的numpy矩阵,填充了float类型的数字。然后我使用astype
方法将它们转换为字符串。在
然后我尝试将这个columnsList[j][(indexList[j]).index(closestFit)]
这个字符串放入newData
的条目中。在
问题是columnsList[j][(indexList[j]).index(closestFit)]
不一定是英语。例如,它可以是希伯来语。在这种情况下-我得到了错误
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
值得注意的是,我写了# -*- coding: utf-8 -*-
,所以我们用utf-8编码,当我打印columnsList[j][(indexList[j]).index(closestFit)]
时,它确实打印了正确的值。所以我们可以打印出来。但由于某些原因,我不能把它放入newData
矩阵中。在
Encode是当您试图从某个字符串类型转换为字节时的操作。您的
columnsList[j][(indexList[j]).index(closestFit)]
似乎包含Unicode字符串,请尝试一下newData[i, j] = columnsList[j][(indexList[j]).index(closestFit)].encode('utf-8')
相反。在
相关问题 更多 >
编程相关推荐