a[99]a[100]a[0]a[1]a[2]a[3]a[4]a[5]11import numpy as npdef sosu(n): a=np.ones(n,dtype=np.int32) for i in range(2,int(np.sqrt(n))+1): for j in range(2*i,n,i): a[j]=0 return a1n=101a = sosu(n)for i in range(2,n): if a[i]==1: print(i,end=' ')実行結果2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97第2部図2.20:「エラトステネスのふるい」によって素数を求めるプログラムと実行結果図2.18:数学関数の使用例図2.19:合計を求めるプログラムと実行結果Pythonでは様々な機能を持つ関数などをまとめたモジュールやライブラリを import モジュール名 as 別名のようにして取り込むことで機能を拡張することができます。NumPy は拡張ライブラリの中でも歴史が古く、データサイエンス分野で必須のライブラリです。数学関数や多数のデータを高速に処理できる配列データを扱う機能を含みます。図2.18に数学関数の使用例を示します。 np.sqrt によって NumPyライブラリに含まれる平方根関数が呼び出されています。配列は、リストと同様に多数のデータを扱うのに便利な表現形式です。配列には名前がつけられ、各要素を配列名[要素番号]のようにして参照することができます。図2.19に配列要素の合計を求めるプログラムを示します。 np.arrayによって配列を生成しています。 print(a) により、各配列要素の値が表示されています。変数sに合計が求まります。図2.20に1次元配列を用いて「エラトステネスのふるい」によって素数を求めるプログラムを示します。 def sosu(n)によって n までの素数を求める関数を定義しています。 np.ones によって要素数 nの配列の 各要素の値を1に初期化し、 2の倍数、3の倍数、… √n の倍数の要素番号の配列要素の値を 0にしてふるい 落とします。 return a は、この関数の値として配列 aを戻します。右側のプログラムで n=101としてこの関数を呼び出し、要素の値が 1(ふるいに残った要素、すなわち素数)の要素番号を表示しています。数値計算ライブラリ…NumPy…と配列について説明した後、計算機を用いて、でたらめな数(乱数)を発生させ、確率的に起こる現象をシミュレートする方法(モンテカルロ法)を紹介します。グラフ表示に用いられる…matplotlib…ライブラリについても紹介します。22a11111...import numpy as npa=2.0print(np.sqrt(a))実行結果1.4142135623730951import numpy as npa=np.array([74,95,68,32,87])print(a)s = 0for i in range(5): s = s+a[i]print(s) 実行結果[74 95 68 32 87]356数値計算ライブラリ NumPy1次元配列例題:素数を求めるプログラム配列と数値計算
元のページ ../index.html#22