Python2.7でnumpy配列との間でデータ型を間違って割り当てたり変換したりしているので、私が問題を引き起こしているのか疑問に思っています。NumPy:dtype float64でnp.arrayにint64値を格納して後で整数に変換するのは安全ですか?
私がやっていることは、numpy.float64型からnumpy.zeros()配列にhdf5の64ビット整数値を読み込むことです!次に、これらの値を別のhdf5に書き込んで、64ビットの符号なし整数を割り当てます。
12028545243
12004994169
質問1:実際にID番号(彼らが原因のデータ型変換に変化しないことが重要である)は、いくつかの元の値の
2つの例示をウィルにその符号なし整数2番目のhdf5ファイルは元のものと同じですか?
小さなサブサンプルでこれを確認しましたが、それがすべての場合に真であるかどうかは制御できません(何百万もあります)!
質問2:私は、データ型=のfloat64とnumpyのアレイに、元のファイルから64ビットの値を読み込み、その後のようなものやっている場合は、次のことが正確になります
value=int(value)
value.astype(int64)
を元の価値か、それとも変容のために変わるのか?
質問3: Pythonは(a)、(b)、(c)、(d)と仮定して値を解釈しますか?科学的表記「e + 10」のように、値の書式設定に問題がありますか?それとも、Pythonはそれらを同じ値として認識しますか?
1.20285452e+10 == 12028545243.0 == 12028545243 == 12028545243
1.20049942e+10 == 12004994169.0 == 12004994169 == 12004994169
(a) (b) (c) (d)
配列名前付きデータの1列印刷(a)に記載されている値:
print data[:,0] <type 'numpy.ndarray'>
(b)のデータ変換を行った後
print data[0,0] <type 'numpy.float64'>
(C)における単一の要素を印刷します
print int(data[0,0]) <type int>
(d) (a)しかし、astype()を使って変換する!
print data[:,0].astype(numpy.int64) <type 'numpy.ndarray'>
なぜ私はint64型をnumpy配列に割り当てて安全でないのか尋ねることがありますか?はい、私はそれを行いますが、既に間違って格納されているデータがあり、私はまだこのデータを信頼できるかどうかを知る必要があります...
私は使用しています:Python2.7、Pythonbrew、Ubuntu 14.04 LTS 64ビットon Lenovo T410
お手数をおかけしていただきありがとうございます。 – firefly2517