初心者向けの Python NumPy チュートリアル: 例で学ぶ

Python の NumPy とは何ですか?

NumPy は、Python で利用可能なオープン ソース ライブラリであり、数学、科学、工学、データ サイエンスのプログラミングに役立ちます。 Python で数学的および統計的な演算を実行するのに非常に便利なライブラリです。 多次元配列と行列の乗算に最適です。 C/との統合が簡単C + + そしてフォートラン。

あらゆる科学プロジェクトにとって、NumPy は知っておくべきツールです。 N 次元配列、線形代数、乱数、フーリエ変換などを使用できるように構築されています。

NumPy は、多次元配列と行列を扱うプログラミング言語です。 NumPy は、配列と行列に加えて、多数の数学演算をサポートしています。 このパートでは、「」のチュートリアルで知っておく必要がある重要な機能を確認します。TensorFlow。 '

NumPy を使用する理由

NumPy はメモリ効率に優れており、他のどのライブラリよりもアクセスしやすい膨大な量のデータを処理できることを意味します。 さらに、NumPy は、特に行列の乗算や再形成に非常に便利です。 その上、NumPy は高速です。 実際、TensorFlow と Scikit は、NumPy 配列を使用してバックエンドで行列の乗算を計算する方法を学習します。

NumPyのインストール方法

NumPy ライブラリをインストールするには、チュートリアルを参照してください。 TensorFlow のインストール方法。 NumPy はデフォルトで Anaconda とともにインストールされます。

リモートの場合、NumPyはインストールされていません-

Anaconda を使用して NumPy をインストールできます。

conda install -c anaconda numpy
  • In Jupyter ノートブック:
import sys
!conda install --yes --prefix {sys.prefix} numpy

NumPyをインポートしてバージョンを確認する

numpy をインポートするコマンドは次のとおりです。

import numpy as np

上記のコードは、Numpy 名前空間の名前を np に変更します。 これにより、Numpy の関数、メソッド、属性の先頭に「numpy」と入力する代わりに「np」を付けることができます。 これは、numpy の文献で見つかる標準的なショートカットです。

インストールされている NumPy のバージョンを確認するには、以下のコマンドを使用します。

print (np.__version__)

出力:

1.18.0

Python NumPy 配列とは何ですか?

NumPy 配列は Python リストに少し似ていますが、同時に大きく異なります。 このトピックを初めて使用する人のために、それが正確に何であり、何に役立つのかを明確にしましょう。

名前のとおり、NumPy 配列は numpy ライブラリの中心となるデータ構造です。 このライブラリの名前は、実際には「Numeric Python」または「Numerical Python」の略称です。

NumPy 配列の作成

Numpy で配列を作成する最も簡単な方法は、次のとおりです。 Pythonリスト

myPythonList = [1,9,8,3]

オブジェクト np.array を使用して、Python リストを numpy 配列に変換します。

numpy_array_from_list = np.array(myPythonList)

リストの内容を表示するには

numpy_array_from_list

出力:

array([1, 9, 8, 3])

実際には、Python リストを宣言する必要はありません。 操作を組み合わせることができます。

a  = np.array([1,9,8,3])

注意: Numpy のドキュメントには、配列を作成するために np.ndarray を使用することが記載されています。 ただし、これは推奨される方法です。

タプルから numpy 配列を作成することもできます。

配列に対する数学的演算

配列に対して加算、減算、除算、乗算などの数学演算を実行できます。 構文は、配列名の後に演算 (+.-,*,/) が続き、その後にオペランドが続きます。

例:

numpy_array_from_list + 10

出力:

array([11, 19, 18, 13])

この操作により、numpy 配列の各要素に 10 が加算されます。

配列の形状

配列の名前の前にオブジェクトの形状を付けると、配列の形状を確認できます。 同様に、dtypes で型を確認できます。

import numpy as np
a  = np.array([1,2,3])
print(a.shape)
print(a.dtype)

(3,)
int64

整数とは、小数点のない値です。 XNUMX 進数で配列を作成すると、型が float に変わります。

#### Different type
b  = np.array([1.1,2.0,3.2])
print(b.dtype)

float64

2次元配列

「,」カンマを使用して次元を追加できます

括弧 [] 内に入れる必要があることに注意してください。

### 2 dimension
c = np.array([(1,2,3),
              (4,5,6)])
print(c.shape)
(2, 3)

3次元配列

高次元は次のように構築できます。

### 3 dimension
d = np.array([
    [[1, 2,3],
        [4, 5, 6]],
    [[7, 8,9],
        [10, 11, 12]]
])
print(d.shape)
(2, 2, 3)
DevOps Tools Engineer試験のObjective Code
配列の作成 配列([1,2,3])
形状を印刷する array([.]).shape

numpy.zeros()とは何ですか?

numpy.zeros() または np.zeros Python 関数を使用して、ゼロでいっぱいの行列を作成します。 Python の numpy.zeros() は、TensorFlow やその他の統計タスクの最初の反復中に重みを初期化するときに使用できます。

numpy.zeros() 関数の構文

numpy.zeros(shape, dtype=float, order='C')

Python numpy.zeros() パラメータ

ここでは、

  • 形状: numpy ゼロ配列の形状です
  • Dタイプ: は numpy ゼロのデータ型です。 オプションです。 デフォルト値は float64 です
  • 注文: デフォルトは C で、Python の numpy.zeros() に不可欠な行スタイルです。

Python numpy.zeros() の例

import numpy as np
np.zeros((2,2))

出力:

array([[0., 0.],
          [0., 0.]])

データ型を使用した numpy ゼロの例

import numpy as np
np.zeros((2,2), dtype=np.int16)

出力:

array([[0, 0],
         [0, 0]], dtype=int16)

numpy.ones() とは何ですか?

np.ones() 関数 は XNUMX でいっぱいの行列を作成するために使用されます。 Python の numpy.ones() は、TensorFlow やその他の統計タスクの最初の反復中に重みを初期化するときに使用できます。

Python numpy.ones() の構文

numpy.ones(shape, dtype=float, order='C')

Python numpy.ones() パラメータ

ここでは、

  • 形状: np.ones の形状です。 Python 配列
  • Dタイプ: は numpy のもののデータ型です。 オプションです。 デフォルト値は float64 です
  • 注文: デフォルトは C で、必須の行スタイルです。

Python numpy.ones() データ型を含む 2D 配列の例

import numpy as np
np.ones((1,2,3), dtype=np.int16)

出力:

array([[[1, 1, 1],        
       [1, 1, 1]]], dtype=int16)

Pythonのnumpy.reshape()関数

Python NumPy の再形成 関数は、データを変更せずに配列を整形するために使用されます。 場合によっては、データをワイドからロングに再形成する必要があるかもしれません。 これには np.reshape 関数を使用できます。

np.reshape() の構文

numpy.reshape(a, newShape, order='C')

ここでは、

a: 整形したい配列

新しい形状: 新たな欲望の形

注文: デフォルトは C で、必須の行スタイルです。

NumPy の変形例

import numpy as np
e  = np.array([(1,2,3), (4,5,6)])
print(e)
e.reshape(3,2)

出力:

 // Before reshape
[[1 2 3] 
 [4 5 6]]
//After Reshape
array([[1, 2],       
	[3, 4],       
	[5, 6]])

Pythonのnumpy. flatten()

Python NumPy フラット化 関数は、配列のコピーを XNUMX 次元で返すために使用されます。 convnet などのニューラル ネットワークを扱う場合は、配列を平坦化する必要があります。 これには np. flatten() 関数を使用できます。

np. flatten() の構文

numpy.flatten(order='C')

ここでは、
注文: デフォルトは C で、必須の行スタイルです。

NumPy フラット化の例

e.flatten()

出力:

array([1, 2, 3, 4, 5, 6])

Python の numpy.hstack() とは何ですか?

Numpy.hstack は、単一の配列を作成するために入力配列のシーケンスを水平方向にスタックするために使用される Python の関数です。 hstack()関数を使用すると、データを水平方向に追加できます。 NumPyでは非常に便利な機能です。

例を使用して Python の hstack を学習してみましょう。

例:

## Horitzontal Stack
import numpy as np
f = np.array([1,2,3])
g = np.array([4,5,6])
print('Horizontal Append:', np.hstack((f, g)))

出力:

Horizontal Append: [1 2 3 4 5 6]

Python の numpy.vstack() とは何ですか?

Numpy.vstack は、単一の配列を作成するために入力配列のシーケンスを垂直方向にスタックするために使用される Python の関数です。 vstack()関数を使用すると、データを垂直方向に追加できます。

例を使って勉強してみましょう:

例:

## Vertical Stack
import numpy as np
f = np.array([1,2,3])
g = np.array([4,5,6])
print('Vertical Append:', np.vstack((f, g)))

出力:

Vertical Append: [[1 2 3]
 [4 5 6]]

NumPy vstack と hstack を学習した後、NumPy で乱数を生成する例を学習しましょう。

NumPy を使用して乱数を生成する

ガウス分布の乱数を生成するには、次を使用します。

numpy.random.normal(loc, scale, size)

ここでは、

  • Loc: 平均。 流通の中心地
  • 規模: 標準偏差。
  • サイズ: 返品数

例:

## Generate random nmber from normal distribution
normal_array = np.random.normal(5, 0.5, 10)
print(normal_array)			
[5.56171852 4.84233558 4.65392767 4.946659   4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]

プロットすると、分布は次のようになります。wing プロット

NumPy を使用して乱数を生成する例
NumPy を使用して乱数を生成する例

NumPy Asarray 関数

asarray() 関数は、入力を配列に変換する場合に使用します。 入力はリスト、タプル、ndarray などです。

構文:

numpy.asarray(data, dtype=None, order=None)[source]

ここでは、

データ:配列に変換したいデータ

dtype: これはオプションの引数です。 指定しない場合、データ型は入力データから推測されます。

注文: デフォルトは C で、必須の行スタイルです。 他のオプションは F (Fortan スタイル)

例:

以下を検討してくださいwing 2 行 1 列に XNUMX が入った XNUMX 次元行列

import numpy as np
A = np.matrix(np.ones((4,4)))

マトリックスの値を変更したい場合は、変更できません。 その理由は、コピーを変更することができないためです。

np.array(A)[2]=2
print(A)			
[[1. 1. 1. 1.]
 [1. 1. 1. 1.] 
 [1. 1. 1. 1.] 
 [1. 1. 1. 1.]]

マトリックスは不変です。 元の配列に変更を加えたい場合は、asarray を使用できます。 2 行目の値を値 XNUMX に変更したときに、何か変化が起こるかどうかを見てみましょう。

np.asarray(A)[2]=2
print(A)

コードの説明:

np.asarray(A): 行列 A を配列に変換します。

[2]: XNUMX行目を選択

出力:

[[1. 1. 1. 1.] 
      [1. 1. 1. 1.] 
      [2. 2. 2. 2.] # new value 
      [1. 1. 1. 1.]]

numpy.arange() とは何ですか?

numpy.arange() は、定義された間隔内で等間隔の値を含む ndarray オブジェクトを返す組み込みの numpy 関数です。 たとえば、1 から 10 までの値を作成するとします。 Python関数でnp.arange()を使用できます。

構文:

numpy.arange(start, stop, step, dtype)

Python NumPy arange パラメータ:

  • 開始: Python 関数の np.arange の間隔の開始。
  • Force Stop: インターバルの終了。
  • 手順: 値間の間隔。 デフォルトのステップは 1 です。
  • Dタイプ: Python の NumPy arange の配列出力の一種です。

例:

import numpy np
np.arange(1, 11)

出力:

array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])

例:

この Python の NumPy arange 関数のステップを変更する場合は、括弧内に XNUMX 番目の数値を追加します。 それによってステップが変わります。

import numpy np
np.arange(1, 14, 4)

出力:

array([ 1,  5,  9, 13])

NumPy リンスペース関数

Linspace は等間隔のサンプルを提供します。

構文:

numpy.linspace(start, stop, num, endpoint)

ここでは、

  • 開始: シーケンスの開始値
  • Force Stop: シーケンスの終了値
  • : 生成するサンプルの数。 デフォルトは50です
  • エンドポイント: True (デフォルト) の場合、stop が最後の値です。 False の場合、ストップ値は含まれません。

例:

たとえば、10 ~ 1 の 5 個の値を等間隔で作成するために使用できます。

import numpy as np
np.linspace(1.0, 5.0, num=10)

出力:

array([1.        , 1.44444444, 1.88888889, 2.33333333, 2.77777778,       3.22222222, 3.66666667, 4.11111111, 4.55555556, 5.        ])

間隔の最後の桁を含めたくない場合は、エンドポイントを false に設定できます。

np.linspace(1.0, 5.0, num=5, endpoint=False)

出力:

array([1. , 1.8, 2.6, 3.4, 4.2])

Python の LogSpace NumPy 関数

LogSpace は、対数スケールで偶数間隔の数値を返します。 Logspace には np.linspace と同じパラメータがあります。

構文:

numpy.logspace(start, stop, num, endpoint)

例:

np.logspace(3.0, 4.0, num=4)

出力:

array([ 1000. ,  2154.43469003,  4641.58883361, 10000.        ])

最後に、配列内の要素のメモリ サイズを確認したい場合は、 itemsize を使用できます。

x = np.array([1,2,3], dtype=np.complex128)
x.itemsize

出力:

16

各要素には 16 バイトが必要です。

Python でのインデックス作成とスライス

numpy を使用すると、データのスライスは簡単です。 行列「e」をスライスします。 Python では、行または列を返すために括弧を使用する必要があることに注意してください。
例:

## Slice
import numpy as np
e  = np.array([(1,2,3), (4,5,6)])
print(e)
[[1 2 3]
 [4 5 6]]

numpy では、最初の配列/列は 0 から始まることに注意してください。

## First column
print('First row:', e[0])

## Second col
print('Second row:', e[1])

出力:

First row: [1 2 3]
Second row: [4 5 6]

Python では、他の多くの言語と同様に、

  • カンマの前の値は行を表します
  • 右側の値は列を表します。
  • 列を選択する場合は、列インデックスの前に : を追加する必要があります。
  • : は、選択した列のすべての行が必要であることを意味します。
print('Second column:', e[:,1])
Second column: [2 5]

XNUMX 行目の最初の XNUMX つの値を返します。 : を使用して、XNUMX 番目までのすべての列を選択します

## Second Row, two values
  print(e[1, :2])			
  [4 5]

Python の統計関数

NumPy には、配列内の指定された要素から最小値、最大値、パーセンタイル標準偏差や分散などを見つけるための便利な統計関数が多数あります。 機能は次のように説明されます-

Numpy は以下のような堅牢な統計機能を備えています。

演算 ナンシー
最小値 np.min()
最大値 np.max()
平均 np.mean()
中央値 np.median()
標準偏差 np.std()

以下を検討してくださいwing アレイ:

例:

import numpy as np
normal_array = np.random.normal(5, 0.5, 10)
print(normal_array)

出力:

[5.56171852 4.84233558 4.65392767 4.946659   4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]

NumPy統計関数の例

### Min 
print(np.min(normal_array))

### Max 
print(np.max(normal_array))

### Mean 
print(np.mean(normal_array))

### Median
print(np.median(normal_array))

### Sd
print(np.std(normal_array))

出力:

4.467042435266913
5.612113171990201
4.934841002270593
4.846995625786663
0.3875019367395316

numpy ドット積とは何ですか?

Numpy.dot 製品 は行列計算のための強力なライブラリです。 たとえば、np.dot を使用してドット積を計算できます。 Numpy.dot 積は、a と b の内積です。 Python の numpy.dot() は 2D 配列を処理し、行列の乗算を実行します。

構文:

numpy.dot(x, y, out=None)

計測パラメータ

ここでは、

x、y: 配列を入力します。 np.dot() 関数が機能するには、x と y は両方とも 1 次元または 2 次元である必要があります

でる: これは、返される 1 次元配列スカラーの出力引数です。 それ以外の場合は、ndarray を返す必要があります。

Returns

Python の関数 numpy.dot() は、1 つの配列 x と y の内積を返します。 dot() 関数は、x と y の両方が XNUMX 次元の場合はスカラーを返します。 それ以外の場合は配列を返します。 「out」が指定された場合は、それが返されます。

発生させます

x の最後の次元が y の最後から XNUMX 番目の次元と同じサイズでない場合、Python のドット積では ValueError 例外が発生します。

例:

## Linear algebra
### Dot product: product of two arrays
f = np.array([1,2])
g = np.array([4,5])
### 1*4+2*5
np.dot(f, g)

出力:

14

Python での行列乗算

Numpy matmul() 関数は、2 つの配列の行列積を返すために使用されます。 仕組みは次のとおりです

1) 2 次元配列、通常の積を返します。

2) 寸法 > 2、製品はマトリックスのスタックとして扱われます。

3) 1 次元配列はまず行列に変換され、次に積が計算されます。

構文:

numpy.matmul(x, y, out=None)

ここでは、

x、y: 配列を入力します。 スカラーは許可されません

でる: これはオプションのパラメータです。 通常、出力は ndarray に保存されます

例:

同様に、np.matmul を使用して行列の乗算を計算できます。

### Matmul: matruc product of two arrays
h = [[1,2],[3,4]] 
i = [[5,6],[7,8]] 
### 1*5+2*7 = 19
np.matmul(h, i)

出力:

array([[19, 22],       
            [43, 50]])

行列式

最後になりますが、行列式を計算する必要がある場合は、np.linalg.det() を使用できます。 numpy が次元を処理することに注意してください。

例:

## Determinant 2*2 matrix
### 5*8-7*6np.linalg.det(i)

出力:

-2.000000000000005

まとめ

  • Python Python で利用可能なオープン ソース ライブラリであり、数学、科学、工学、 データサイエンスプログラミング.
  • numpy.zeros() または np.zeros Python 関数は、ゼロでいっぱいの行列を作成するために使用されます。
  • Python の numpy.ones() は、TensorFlow やその他の統計タスクの最初の反復中に重みを初期化するときに使用できます。
  • Python NumPy Reshape 関数は、データを変更せずに配列を整形するために使用されます。
  • Python NumPy Flatten 関数は、配列のコピーを XNUMX 次元で返すために使用されます。
  • Numpy.hstack は、入力配列のシーケンスを水平方向に積み重ねて単一の配列を作成するために使用される Python の関数です。
  • Numpy.vstack は、単一の配列を作成するために入力配列のシーケンスを垂直方向にスタックするために使用される Python の関数です。
  • numpy.arange() は、定義された間隔内で等間隔の値を含む ndarray オブジェクトを返す組み込みの numpy 関数です。
  • Numpy.dot 製品は、行列計算用の強力なライブラリです。
  • Numpy matmul() 関数は、2 つの配列の行列積を返すために使用されます。