我试图编写相当复杂的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
是一个numpy矩阵大小200乘4,填充了float类型的数字。然后我使用astype
方法将它们转换为字符串。
然后我尝试将这个字符串columnsList[j][(indexList[j]).index(closestFit)]
放入newData
的条目中。
问题是columnsList[j][(indexList[j]).index(closestFit)]
不一定是英语。例如,它可能是希伯来语。在这种情况下 - 我收到错误
UnicodeEncodeError:' ascii'编解码器不能对位置0-2中的字符进行编码:序数不在范围内(128)
值得注意的是,我已经编写了# -*- coding: utf-8 -*-
,因此我们使用utf-8编码,当我打印columnsList[j][(indexList[j]).index(closestFit)]
时,它确实打印了正确的值。所以我们可以打印出来。但出于某种原因,我无法将其放入newData
矩阵。
答案 0 :(得分:0)
当您尝试将某些字符串类型转换为字节时,编码就是操作。看来,您的columnsList[j][(indexList[j]).index(closestFit)]
包含Unicode字符串,请尝试
newData[i, j] = columnsList[j][(indexList[j]).index(closestFit)].encode('utf-8')
代替。