かなり複雑なPythonプログラムを作成しようとしていますが、私はちょっとした小さな細部に問題があります。UnicodeEncodeError: 'ascii'コーデックは0-2の位置にある文字をエンコードできません:序数は範囲外です(128)
問題のコードセクションは、このです:
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
はfloat型の数で満たされた4によってnumpyのマトリクスサイズ200、です。私はその後、astype
メソッドを使用して文字列に変換します。
次に、newData
というエントリに、この文字列を入力してみます。columnsList[j][(indexList[j]).index(closestFit)]
問題はcolumnsList[j][(indexList[j]).index(closestFit)]
が必ずしも英語であるとは限りません。それは、例えば、ヘブライ語である可能性があります。その場合には - 私はエラー
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
を得ることは、私はそう、我々はUTF-8でエンコードされている、と私はcolumnsList[j][(indexList[j]).index(closestFit)]
を印刷するとき、それは確かに正しい値を出力# -*- coding: utf-8 -*-
を書かれていることは注目に値します。それで私たちはそれを印刷することができます。しかし何らかの理由で私はそれをnewData
行列に入れることはできません。
'astype(str)'がバイト文字列配列を作成している可能性があります。 'dtype'とは何ですか?それはASCIIです。これらの余分な文字を保持するには、unicode dtypeを指定する必要があります。 – hpaulj