PythonでのNumPy配列の基本的な作成方法 – How to create Numpy arrays

PythonでのNumPy配列の基本的な作成方法 – How to create Numpy arrays

NumPy(Numerical Python)は、Pythonの数値計算用の強力なライブラリで、多次元の配列(ndarray)を操作するためのツールを提供します。以下に、NumPy配列の基本的な作成方法を簡単に説明します。

np.array()関数を用いてPythonのシークエンスからNumPy配列を作成する方法

NumPyはPythonのシーケンス(リスト、タプルなど)をNumPy配列に変換するための便利な方法を提供しています。以下に、PythonシーケンスからNumPy配列を作成する方法を解説します。

リストからの配列の作成

PythonのリストからNumPy配列を作成するには、numpy.array() 関数を使用します。以下はその例です。

import numpy as np

python_list = [1, 2, 3, 4, 5]
numpy_array = np.array(python_list)

print(numpy_array)

このコードでは、Pythonリスト python_list を np.array() 関数を使用してNumPy配列 numpy_array に変換しています。

タプルからの配列の作成

タプルをNumPy配列に変換する場合も、np.array() 関数を使用します。以下はその例です。

import numpy as np

python_tuple = (1, 2, 3, 4, 5)
numpy_array = np.array(python_tuple)

print(numpy_array)

多次元シーケンスからの多次元配列の作成

NumPyは多次元の配列もサポートしています。多次元のPythonシーケンスから多次元のNumPy配列を作成することができます。以下はその例です。

import numpy as np

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
nested_array = np.array(nested_list)

print(nested_array)

このコードでは、入れ子になったリストを含むPythonシーケンス nested_list を np.array() 関数を使用して多次元のNumPy配列 nested_array に変換しています。

NumPyのnp.array() 関数を使用することで、Pythonのシーケンスを効率的なNumPy配列に変換できます。この変換により、数値計算やデータ処理を効率的に行うための基盤が整います。 NumPyの配列は、多次元データを操作するために非常に強力であり、科学的、数学的、統計的なアプリケーションで広く使用されています。

NumPy配列を作成するための関数の利用

np.arange()による等間隔の配列の作成

np.arange()関数は、指定された範囲内で等間隔の数値を持つNumPy配列を作成します。以下はその使用例です。

import numpy as np

# 0から9までの範囲で2刻みの配列を作成
my_array = np.arange(0, 10, 2)

print(my_array)

このコードは、0から9までの範囲で2刻みの数値を持つNumPy配列を作成します。

np.linspace()による等分割された範囲からの配列の作成

np.linspace()関数は、指定された範囲を等分割した数値を持つNumPy配列を作成します。以下はその使用例です。

import numpy as np

# 0から1までの範囲を5等分割した配列を作成
my_array = np.linspace(0, 1, 5)

print(my_array)

このコードは、0から1までの範囲を5等分割した数値を持つNumPy配列を作成します。

np.eye()による単位行列の作成

np.eye()関数は、指定されたサイズの単位行列を作成します。単位行列は対角線上に1があり、それ以外の要素は0です。以下はその使用例です。

import numpy as np

# 3x3の単位行列を作成
my_array = np.eye(3)

print(my_array)

このコードは、3×3の単位行列を作成します。

np.diag()による対角行列の作成

np.diag()関数は、指定された対角線要素から対角行列を作成します。以下はその使用例です。

import numpy as np

# 対角線上に1, 2, 3を持つ対角行列を作成
my_array = np.diag([1, 2, 3])

print(my_array)

このコードは、対角線上に1, 2, 3を持つ対角行列を作成します。

np.vander()によるVandermonde行列の作成

np.vander()関数は、Vandermonde行列を作成します。Vandermonde行列は、ベクトルの冪に基づいて構築される行列です。以下はその使用例です。

import numpy as np

# 1, 2, 3のベクトルから3列のVandermonde行列を作成
my_array = np.vander([1, 2, 3], increasing=True)

print(my_array)

このコードは、1, 2, 3のベクトルから3列のVandermonde行列を作成します。

これらの関数を使用することで、特定のパターンで数値を持つNumPy配列を効率的に作成できます。これらの配列は、さまざまな数学的、統計的、工学的な計算に役立ちます。

一般的な多次元配列作成関数

NumPyは、numpy.ones(), numpy.zeros(), およびランダムな数値を持つ配列を作成するための関数を提供しています。以下にそれぞれの関数について詳しく解説します。

numpy.ones()による1で初期化された配列の作成

numpy.ones()関数は、指定された形状の配列を1で初期化します。以下はその使用例です。

import numpy as np

# 2x3の形状で1で初期化された配列を作成
ones_array = np.ones((2, 3))

print(ones_array)

このコードは、2行3列の形状を持つNumPy配列を1で初期化します。

numpy.zeros()による0で初期化された配列の作成

numpy.zeros()関数は、指定された形状の配列を0で初期化します。以下はその使用例です。

import numpy as np

# 3x2の形状で0で初期化された配列を作成
zeros_array = np.zeros((3, 2))

print(zeros_array)

このコードは、3行2列の形状を持つNumPy配列を0で初期化します。

numpy.randomモジュールによるランダムな数値を持つ配列の作成

numpy.randomモジュールは、ランダムな数値を持つ配列を作成するためのさまざまな関数を提供します。以下はその一例です。

numpy.random.rand()関数

numpy.random.rand()関数は、0から1の範囲で一様分布するランダムな数値を持つ配列を作成します。

import numpy as np

# 2x2の形状で0から1の範囲のランダムな数値を持つ配列を作成
random_array = np.random.rand(2, 2)

print(random_array)

numpy.random.randn()関数

numpy.random.randn()関数は、平均が0で標準偏差が1の正規分布からランダムな数値を持つ配列を作成します。

import numpy as np

# 3x3の形状で正規分布からランダムな数値を持つ配列を作成
random_array = np.random.randn(3, 3)

print(random_array)

NumPyのnumpy.ones(), numpy.zeros(), およびnumpy.randomモジュールを使用することで、特定の初期値やランダムな値を持つNumPy配列を簡単に作成できます。これらの配列は、データの生成や初期化に役立ちます。

numpy.indices()関数

numpy.indices()関数は、多次元のインデックス配列を作成するためのNumPy関数です。この関数は、多次元配列を操作し、特定の条件下での要素へのアクセスに役立ちます。以下にnumpy.indices()の基本的な使い方を説明します。

numpy.indices()関数は、引数として多次元配列の形状(shape)を受け取り、その形状に合わせたインデックス配列を作成します。各次元の要素に対して、その位置を示すインデックスが生成されます。

以下は、numpy.indices()関数の使用例です

import numpy as np

# 3x3の形状の多次元インデックス配列を作成
shape = (3, 3)
indices = np.indices(shape)

print(indices)

このコードは、3×3の形状を持つ多次元インデックス配列を作成します。結果は次のようになります

array([[[0, 0, 0],
        [1, 1, 1],
        [2, 2, 2]],

       [[0, 1, 2],
        [0, 1, 2],
        [0, 1, 2]]])

このインデックス配列には2つの行列が含まれており、それぞれが元の多次元配列の各次元の位置を示しています。最初の行列は行のインデックスを、2番目の行列は列のインデックスを表しています。

配列の複製・結合・変更

NumPyにおける既存の配列を複製し、結合し、変更するための操作を解説します。

複製(Replicating)

既存のNumPy配列を複製するには、主に以下の方法があります

numpy.copy()

このメソッドは、既存の配列をコピーして新しい配列を作成します。元の配列とは独立しており、変更しても元の配列に影響を与えません。

import numpy as np

arr = np.array([1, 2, 3])
copy_arr = arr.copy()

copy_arr[0] = 0  # copy_arrの要素を変更
print(arr)       # 元の配列には影響を与えない

結合(Joining)

NumPyでは、複数の配列を結合して新しい配列を作成する方法が提供されています。主な結合方法は次の通りです

numpy.concatenate()

これは、複数の配列を指定した軸に沿って結合するのに使用します。

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

combined = np.concatenate((arr1, arr2))
print(combined)  # [1, 2, 3, 4, 5, 6]

numpy.vstack()およびnumpy.hstack()

これらの関数は、垂直方向(行)および水平方向(列)に配列を結合するために使用されます。

import numpy as np

arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6]])

vertical_combined = np.vstack((arr1, arr2))
horizontal_combined = np.hstack((arr1, arr2.T))  # arr2を転置して水平結合

print(vertical_combined)
print(horizontal_combined)

変更(Mutating)

既存の配列を変更するには、インデックスを使用して配列の要素にアクセスし、値を変更します。また、NumPyの便利な関数を使用して要素の変更や条件に基づく変更も行えます。

import numpy as np

arr = np.array([1, 2, 3, 4, 5])

# 要素の変更
arr[0] = 0

# 条件に基づく変更
arr[arr > 2] = 10

print(arr)
にほんブログ村 教育ブログへ
にほんブログ村
インターネット・コンピュータランキング
インターネット・コンピュータランキング
ブログ王ランキングに参加中!
PC関連ランキング
くる天 人気ブログランキング

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です