<コード>

データ ライブラリ NumPy

NumPy —ベクトル、行列、配列を操作するための多数の操作を実装する Python プログラミング言語のオープン ソース ライブラリです。 

インタープリター言語 (Python など) で実装された数学的アルゴリズムは、コンパイル済み言語 (Fortran、C、Java など) で実装されたものよりもはるかに遅いことがよくあります。 NumPy ライブラリは、多次元配列を操作するために最適化された計算アルゴリズム (関数と演算子の形式) の実装を提供します。 
その結果、配列 (行列) に対する一連の操作として表現でき、NumPy を使用して実装できるアルゴリズムは、十分に高速です。

NumPy(Numeric Python) は、データを操作するためのコア数学ライブラリです。このライブラリは、機械学習またはデータ分析タスクを処理するための他のライブラリの基盤となります (例: Pandas (表形式データの処理)、 SciPy (最適化手法と科学計算)、< tt>Matplotlib (プロット)).

 

NumPy の使用

numpy ライブラリの使用を開始するには、他のライブラリと同様に、プログラムの最初にインポートする必要があります。 numpy をインポート かそこら(より頻繁に使用されます) numpy を np としてインポート



NumPy ベクトル

NumPy のベクトル (または配列) は、同種のデータの順序付けられたセットです。

ベクトルの要素は、リストで行われるのと同じように、そのインデックスによってアクセスできます。ベクトルの各要素には、作成時に設定される独自の特定の場所があります。
ベクトル要素はすべて同じデータ型 (intstrbool など) です。

ベクターの作成
ベクトルを作成するには、numpy.array コンストラクター (反復可能なオブジェクト) を使用する必要があります。
括弧は、タプル、リスト、range() などの反復可能なオブジェクトを示します。
 
numpy を np としてインポート numpy を np としてインポート print(np.array((1,2,3,4,5))) # タプルからのベクトル print(np.array([1,2,3,4,5])) # リストからのベクトル print(np.array(range(5))) # ジェネレーターからのベクトル

ベクター要素の操作

ベクター要素の操作はリスト要素の場合と同じで、インデックスによって要素にアクセスしたり、スライスを作成したりできます。

<テーブル> <本体>
1
2
3
4
5
6
7
numpy を np としてインポート V = np.array((1,2,3,4)) print(V[0]) #1 print(V[-1]) # 4 print(V[1:-2]) # [2] print(V[::2]) # [1 3]
ベクター要素の選択
ベクトル要素を選択するには、論理値 (式) を含むベクトルを使用できます。ブール値を持つベクトル内で True となるベクトルの要素が選択されます。
 

numpy を np としてインポート V = np.array([1,-2,3,-4,5]) # ベクトルの最初の 2 つの要素を選択します print(V[np.array((True, True, False, False, False))]) # [ 1 -2] # 正のベクトル要素を選択する print(V[V > 0]) # [1 3 5] # 偶数のベクトル要素を選択する print(V[V % 2 == 0]) # [-2 -4]

配列と行列を作成する方法

配列と行列を作成するその他の便利な方法。

<テーブル> <本体>
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
十一
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
numpy を np としてインポート # ゼロの 1 次元配列 print(np.zero(5)) #[0. 0.0.0.0.] # ゼロの二次元配列 print(np.zeros((2, 3))) # [[0. 0.0.] #[0. 0.0.]] # 単位の 3D 配列 print(np.ones((2,3,4))) # [[[1. 1.1.1.] #[1。 1.1.1.] #[1。 1.1.1.]] # # [[1. 1.1.1.] #[1。 1.1.1.] #[1。 1.1.1.]]] # タイプ表示付きゼロの配列 print(np.zeros(5, dtype=np.int)) # [0 0 0 0 0] # リストのリストに基づく配列 print(np.array([[1,2.0],[0,0],(1,3.)])) # [[1. 2.] #[0. 0.] #[1。 3.]] # 0 から始まる等差数列の要素で満たされた配列 print(np.arange(10)) # [0 1 2 3 4 5 6 7 8 9] # 型表示付きの算術進行 print(np.arange(2, 10, dtype=np.float)) # [2. 3. 4. 5. 6. 7. 8. 9.] # 非整数差の算術数列 print(np.arange(2, 3, 0.1)) # [2. 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9] # 指定された項数の算術進行 print(np.linspace(1., 4., 6)) # [1. 1.6 2.2 2.8 3.4 4. ]
配列要素がゼロ
 
関数 ゼロ以外(V) 
結果は配列のタプルになります。このような各配列は、元の配列の個別の軸に対応し、この配列にはゼロ以外の要素を持つインデックスが含まれます。
V - NumPy 配列または配列のようなオブジェクト。
Python tuple (tuple) - 元の配列 V のゼロ以外の要素のインデックスの配列を含むタプルを返します。
 
関数count_nonzero(V)
この関数は、それらが true であるかどうかをチェックする Python オブジェクトの組み込み  __bool__() メソッドに基づいています。つまり、 count_nonzero() 関数は実際には数値だけでなく、true または false のいずれかのオブジェクトも処理できるということになります。
V - NumPy 配列または配列のようなオブジェクト。
この関数は、指定された軸に沿ったゼロ以外の配列要素の数を返します。

対角配列

 diag(V, k=0) 関数を使用すると、配列から対角線を抽出したり、1 次元配列から対角線配列を作成したりできます。
V - 配列のようなオブジェクト、2 次元または 1 次元の配列、行列、リスト、またはタプル、またはリストまたはタプルを返すメソッドを持つ関数またはオブジェクト。
k - 対角線のインデックス (オプション)。
デフォルトは k = 0 で、これは主対角線に対応します。正の k 値は対角線を上に移動し、負の値は対角線を下に移動します。

この関数は、array NumPy (ndarray) - 指定された配列対角線または指定された 1 次元配列からの対角線配列を返します。

2D NumPy 配列

2 次元配列の要素にアクセスするには、要素の座標を最初に行番号、次に列番号を指定します。座標はカンマで区切られます。
reshape(). 関数を使用すると、任意の配列を 2 次元配列に変換できます。

<テーブル> <本体>
1
2
3
4
5
6
7
8
# reshape() 関数は、データを変更せずに配列の形状を変更します。 x = np.arange(12).reshape(3, 4) print(x) # [[ 0 1 2 3] # [ 4 5 6 7] # [ 8 9 10 11]] # 要素にアクセスするには、その座標をカンマで区切って指定します print(x[1, 2]) # 6