Python 学習:range、xrange、arange

2014-05-21 :  PCクリニック
本文の前に、
-・・・ -・-
blogram「最新エントリのエコー」昨日の記事反映がなされていない???
現時点での、blogramのランクインカテゴリは、
3、3、1、1、0、 0、0、0、1、0(39)で、換算ポイント 65pt 。
「Firefox」今朝方、2位に上がった。
・-・ - -・

さて、本文。

「range」「xrange」「numpy.arange」については、
これまでの記事で、何度も現れている。

ここで、キッチリ整理した方がいい。

先ずは、実例:

range(3) -----> [0, 1, 2]
range(2,5) ----> [2, 3, 4]
range(2,7,2) ---> [2, 4, 6]
type(range(~)) ---> 'list'

「xrange」は、これまでのコード例で、3回ほど使っている:
xrange

「np.arange」も2回ほど使っている:
arange


それで、この日本語のサイト「Vector」:
xrangeオブジェクト
  ビルトイン関数にrange関数とxrange関数がありますが、
  range関数がリストを返すのに対して、
  xrange関数はxrangeオブジェクトを返します。
  ・・・・・
  ・・・・・
  rangeもxrangeも使う場面は同じですが、
  rangeはリストであるためリソースをそれだけ消費することになります。
  一方、xrangeは範囲であるため、リソースの消費がありません。
  したがって、範囲が大きい場合(例えば0~10000)は、
  xrangeオブジェクトを使います。
  xrangeオブジェクトは、tolist()メソッドによってリストに
  変換することができます。
   x = xrange( 0, 100 )   # ビルトイン関数
   list1 = x.tolist()


それから、「Numpy」の「arange」については、
しばしば参照させて頂いている、
配列オブジェクト
に例がある。

  ・・・・・
  連続データの作成
   numpy.arangeという関数を使うと連続データが作成できます。
   >>> x=np.arange(0.0, 10.0, 0.1)
   >>> x
   array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ,
   ・・・・・
   8.8, 8.9, 9. , 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8,
   9.9])
  ・・・・・

で、リンク先には、
  numpy.arange([start], stop[, step], dtype=None)

  Return evenly spaced values within a given interval.

  Values are generated within the half-open interval [start, stop)
   (in other words, the interval including start but excluding stop).
  For integer arguments the function is equivalent to
  the Python built-in range function,
  but returns a ndarray rather than a list.

  Parameters:
   start : number, optional
    Start of interval. The interval includes this value.
    The default start value is 0.

   stop : number
    End of interval. The interval does not include this value.
   step : number, optional
    Spacing between values.
    For any output out, this is the distance between two adjacent values,
    out[i+1] - out[i]. The default step size is 1.
    If step is specified, start must also be given.
   dtype : dtype
    The type of the output array.
    If dtype is not given,
    infer the data type from the other input arguments.

  Returns:
   out : ndarray
    Array of evenly spaced values.

  For floating point arguments, the length of the result is
  ceil((stop - start)/step).
  Because of floating point overflow,
  this rule may result in the last element of out being greater than stop.

そして、
  See also
   「linspace
      Evenly spaced numbers with careful handling of endpoints.
   ・・・・・


最後に、「Stack Overflow」から
built-in range or numpy.arange: which is more efficient?

先ずは、
メモリ使用量では、
range よりも、xrange を使うべき。

処理時間を考えるなら、・・・
これも、
  size = int(1E6)
  for x in xrange(size): x ** 2
の様な例だが、

range:136 ms に対して、xrange:88.9 ms と速い。

それから、(何となく思いこみの) NumPy を使うと速い?

だが、
  for x in np.arange(size): x ** 2
では、なんと! 1.16 s だそうな。

  np.arange(size) ** 2

の様な使い方をすべき!!!

そうすれば、
  19.5 ms
と最速。

「Python」で処理時間を意識するなら、
コーディング・スタイルが重要ダ!!!


本日はここまで。

Python 学習は続く、・・・


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


140515
関連記事
スポンサーサイト

コメントの投稿

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

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク