頭と尻尾はくれてやる!

iOSアプリなどの開発日記です


numpyで値の型を指定したつもりが

TFRecordでたくさんの浮動小数点数を扱う
↑これに関連するnumpyの話。

numpyで配列を作る時に空の配列を用意してそこに値を入れていく、ってのをやろうとしたんだけど、この場合、最初の空の配列をどうするのか?いくつかあるみたいでこれが定番!というのがよくわからなかったんだが、とりあえずzerosを使うことにした。それ自体はいいんだと思うが、、、

↓これを実行すると
{
    a = 1.
    b = 2.
    arr = np.zeros([0] , dtype=np.float32)
    arr = np.append(arr, a)
    arr = np.append(arr, b)

    print(type(a))
    print(arr)
    print(type(arr[0]))
}
<class ‘float’>
[ 1. 2.]
<class 'numpy.float64'> ←な、なんですとー?!

↑こんな結果になる。
zerosのところで型指定して32bitの値が入るんだろうと思いきや、appendで入る値は64bitのままになってる。

これになかなか気付かず、TensorFlowのTFRecordで作成したデータが意図通りに読み込めずにうんうんと悩んでた。

arr = np.append(arr , np.float32(a))
のようにキャストすればいけた、、、けど、じゃあzerosでの指定はなんやねん?!


Python 3.5.2 :: Anaconda 4.1.1 (x86_64)
スポンサーサイト




<< TFRecordで多次元配列を扱う  TopPage  TFRecordでたくさんの浮動小数点数を扱う >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
https://ringsbell.blog.fc2.com/tb.php/1108-3f64312b




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.