2017年11月3日のブックマーク (3件)

  • Pythonのlistとnumpy.arrayとかの速度比較 - 唯物是真 @Scaled_Wurm

    導入 Pythonの数値計算ライブラリNumPyのarrayを使って、標準のlistを単純に置き換えてみると遅くなることが多いです。 実際どれぐらい速度に差があるのかlist, array, numpy.arrayで比較してみました。 処理時間の計測 Pythonに含まれるライブラリのtimeitを使います。 100000個の要素(すべてが1)を持つ配列の各要素の総和を1000回計算した時の処理時間を求めます。 forループの場合(イテレータでアクセスした場合)とsum関数、numpy.sum関数を使った場合について調べています。 ソースコードは一番下にあります。 使ったバージョンはPython 2.7.2, NumPy 1.6.2。 結果は以下のとおり(単位は秒)。 for sum numpy.sum list 3.17386984825 0.524603128433 9.5617320

    Pythonのlistとnumpy.arrayとかの速度比較 - 唯物是真 @Scaled_Wurm
    emeraldwar
    emeraldwar 2017/11/03
    for使うならlist, numpyで用意された関数つかうならndarray
  • Pythonで整数を割り算すると、デフォルトでは小数点以下が切り捨てになる問題の解決方法 - ドラあり!*ドラゴンに挑むアリの物語 ** Python使いの日々

    Pythonで整数や、整数が入っている変数を割り算(除算)すると、小数点以下が切り捨てになる。 >>> 12/26 0 このような感じ。 これを解決する場合、2つの簡単な方法がある。 float定義をする。 割られる方または割る方にfloatと指定しておく。 >>> float(12)/26 0.46153846153846156 となり小数点以下も切り下げにならずに済む。 1.0をかけておく。 割られる方または割る方に1.0をかけておく。 主旨はfloat定義と同じだけど、あらかじめ1.0をかけておくことによって、 これは小数点以下の割り算の可能性があると指定しておく。 >>> 12*1.0/26 0.46153846153846156 小技だけど、結構重宝するので備忘録。 みんなのPython 作者: 柴田淳出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/08/22メ

    Pythonで整数を割り算すると、デフォルトでは小数点以下が切り捨てになる問題の解決方法 - ドラあり!*ドラゴンに挑むアリの物語 ** Python使いの日々
    emeraldwar
    emeraldwar 2017/11/03
    解決方法 割られる方もしくは割る法をfloatにするか、1.0を掛けておく
  • Python Tips: リストの中から要素をランダムにピックアップしたい

    Pythonでリストの中から要素をランダムで抽出する方法をご紹介します。 ランダムで抽出する、というとき、抽出方法は2つあるかと思います。 1つだけ抽出する 複数抽出する 以下、それぞれについて見ていきます。 1つだけ抽出する 1つだけ抽出したいときは random ライブラリの choice 関数を使います。 import random marks = ['club', 'diamond', 'heart', 'spade'] numbers = range(1, 14) cards = [(m, n) for m in marks for n in numbers] random.choice(cards) # => トランプのカードのいずれか たとえば、52枚のカードの束から1枚取り出して、そのカードをまた元に戻して、というように繰り返す場合なんかは、 random.choice を

    Python Tips: リストの中から要素をランダムにピックアップしたい
    emeraldwar
    emeraldwar 2017/11/03
    numpy.random.choiceとrandom.choiceで挙動が異なることに注意。前者は、複数個取り出すことができるが、後者はrandom.sample(list, 3)など。