Python 初心者向け NumPy チュートリアル: 例を使って学ぶ

NumPyとは何か Python?

NumPy オープンソースライブラリは、 Pythonは、数学、科学、工学、データサイエンスのプログラミングに役立ちます。数学や統計の演算を実行するのに非常に便利なライブラリです。 Python多次元配列や行列の乗算に最適です。C/との統合も簡単です。C++ と Fortran.

あらゆる科学プロジェクトにとって、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”または“数値 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 配列を作成することもできます。

数学 Opera配列上のオプション

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

例:

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 関数はゼロでいっぱいの行列を作成するために使用されます。numpy.zeros() Python TensorFlow やその他の統計タスクの最初の反復中に重みを初期化するときに使用できます。

numpy.zeros() 関数の構文

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

Python numpy.zeros() パラメータ

ここでは、

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

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() 関数 1でいっぱいの行列を作成するために使用されます。numpy.ones() Python 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)

numpy.reshape()関数 Python

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]])

numpy.flatten() の Python

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

np. flatten() の構文

numpy.flatten(order='C')

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

NumPy フラット化の例

e.flatten()

出力:

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

numpy.hstack()とは何か Python?

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

hstackを勉強しましょう Python 例を挙げて説明します。

例:

## 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]

numpy.vstack()とは何か Python?

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 で乱数を生成する例を学びましょう。

ランダム生成 Numbers 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]

プロットすると分布は次のグラフのようになります。

ランダムを生成する例 Numbers NumPyを使用する
ランダムを生成する例 Numbers NumPyを使用する

NumPy Asarray 関数

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

構文:

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

ここでは、

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

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

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

例:

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までの値を作成したい場合は、np.arange()を次のように使用できます。 Python 機能。

構文:

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

Python NumPy arange パラメータ:

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

例:

import numpy np
np.arange(1, 11)

出力:

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

例:

このNumPy arange関数のステップを変更したい場合は、 Python たとえば、括弧内に 3 番目の数字を追加できます。これにより、ステップが変更されます。

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])

LogSpace NumPy関数 Python

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]

In 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()

次の配列を考えてみましょう。

例:

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 productはaとbのドット積です。numpy.dot()は Python 2D 配列を処理し、行列の乗算を実行します。

構文:

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

Parameters

ここでは、

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

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

返品

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

発生させます

ドット積 Python x の最後の次元が y の最後から 2 番目の次元と同じサイズでない場合は、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 関数はゼロで満たされた行列を作成するために使用されます。
  • numpy.ones() の Python TensorFlow やその他の統計タスクの最初の反復中に重みを初期化するときに使用できます。
  • Python NumPy Reshape 関数は、データを変更せずに配列を形成するために使用されます。
  • Python NumPy Flatten 関数は、配列のコピーを 1 次元で返すために使用されます。
  • Numpy.hstackは、 Python 入力配列のシーケンスを水平に積み重ねて単一の配列を作成するために使用されます。
  • Numpy.vstackは、 Python 入力配列のシーケンスを垂直に積み重ねて単一の配列を作成するために使用されます。
  • numpy.arange() は、定義された間隔内で等間隔の値を含む ndarray オブジェクトを返す組み込みの numpy 関数です。
  • Numpy.dot 製品は、行列計算用の強力なライブラリです。
  • Numpy matmul() 関数は、2 つの配列の行列積を返すために使用されます。