2011-07-18 5 views
0

numpyを使用して数学的なコードをプロトタイプします。私の数学は、行列演算(乗算、numpyでのドット関数)を実行する確率のみを含んでいます。すべての値が0から1までの範囲であることを知っているので、32/64ビットでnumpyを強制的にコード値(メモリを節約したり、精度を上げる)にすることはできますか?pythonとnumpy:xからyまでの範囲の値を含むように行列を強制するか?

try1 = numpy.array([1.0,0.2564654646546],dtype='f16') 

dtypeは値ごとに同じ量のメモリでxからyまでの範囲にすることができますか?

+1

ありません。 numpyのデータ型は、基礎となるCコードの低レベルのデータ型の名前です。 – katrielalex

+3

確率があるので、(-inf、1)ではなく[0,1]の範囲に入るべきではないでしょうか?(数値安定性を保持するために対数で計算すべきではありませんか?) –

+0

@larsmans:対数 – smci

答えて

1

私が知る限り、numpy配列は固定小数点演算をサポートしていないため、追加する予定はありません。あなたはそのもので遊ぶことに興味があるならmatlabのfixed-pt toolboxをチェックすることができます。本当に数学が好きであれば、整数データ型を使って自分自身を調理し、 'ポイント'を追跡することができます。

浮動小数点の仕組みはすでにかなりきれいですが、数字が[0,1]になっているという知識だけで、1ビットあたりの精度のヒープを得ることはできません。浮動小数点は科学記法に似ています。ビット数を増やすと、より大きな範囲の数値ではなく、主に「有効数字」が増えます。

0

私は、今日あなたがこれをacchieveことができたとします。いいえ、

簡単
a = np.linspace(0, 1, number_of_points) 
関連する問題