[Python] NumPyで1次元配列を作成する方法
NumPyで1次元配列を作成するには、numpy.array()関数
を使用します。
リストやタプルなどのシーケンスを引数として渡すことで、1次元配列を作成できます。
例えば、numpy.array([1, 2, 3])
は、要素1, 2, 3を持つ1次元配列を生成します。
また、numpy.arange()
を使うと、指定した範囲の連続した数値から1次元配列を作成できます。
例として、numpy.arange(5)
は0から4までの1次元配列を返します。
1次元配列の作成方法
numpy.array()を使った1次元配列の作成
numpy.array()関数
を使用すると、Pythonのリストやタプルから1次元配列を作成できます。
以下はその例です。
import numpy as np
# リストから1次元配列を作成
list_data = [1, 2, 3, 4, 5]
array_data = np.array(list_data)
print(array_data)
[1 2 3 4 5]
numpy.arange()を使った1次元配列の作成
numpy.arange()関数
は、指定した範囲の数値を持つ1次元配列を生成します。
開始値、終了値、ステップ幅を指定できます。
import numpy as np
# 0から9までの1次元配列を作成
array_data = np.arange(0, 10, 1)
print(array_data)
[0 1 2 3 4 5 6 7 8 9]
numpy.linspace()を使った1次元配列の作成
numpy.linspace()関数
は、指定した範囲内で等間隔の数値を持つ1次元配列を生成します。
開始値、終了値、生成する要素数を指定できます。
import numpy as np
# 0から1までの間に5つの等間隔の数値を持つ1次元配列を作成
array_data = np.linspace(0, 1, 5)
print(array_data)
[0. 0.25 0.5 0.75 1. ]
numpy.ones()を使った1次元配列の作成
numpy.ones()関数
を使用すると、指定したサイズのすべての要素が1の1次元配列を作成できます。
import numpy as np
# 要素数5の1次元配列を作成
array_data = np.ones(5)
print(array_data)
[1. 1. 1. 1. 1.]
numpy.zeros()を使った1次元配列の作成
numpy.zeros()関数
を使用すると、指定したサイズのすべての要素が0の1次元配列を作成できます。
import numpy as np
# 要素数5の1次元配列を作成
array_data = np.zeros(5)
print(array_data)
[0. 0. 0. 0. 0.]
numpy.random()を使ったランダムな1次元配列の作成
numpy.random
モジュールを使用すると、ランダムな数値を持つ1次元配列を生成できます。
以下は、0から1の間のランダムな数値を持つ1次元配列の例です。
import numpy as np
# 要素数5のランダムな1次元配列を作成
array_data = np.random.rand(5)
print(array_data)
[0.12345678 0.23456789 0.34567890 0.45678901 0.56789012]
これらの方法を使うことで、さまざまな1次元配列を簡単に作成することができます。
1次元配列の操作
配列の要素にアクセスする方法
NumPyの1次元配列では、インデックスを使用して要素にアクセスできます。
インデックスは0から始まります。
以下は、要素にアクセスする例です。
import numpy as np
# 1次元配列を作成
array_data = np.array([10, 20, 30, 40, 50])
# インデックス1の要素にアクセス
element = array_data[1]
print(element)
20
配列の要素を変更する方法
配列の特定の要素をインデックスを使って変更することができます。
以下はその例です。
import numpy as np
# 1次元配列を作成
array_data = np.array([10, 20, 30, 40, 50])
# インデックス2の要素を変更
array_data[2] = 100
print(array_data)
[ 10 20 100 40 50]
配列のスライス操作
スライスを使用すると、配列の一部を取得することができます。
開始インデックスと終了インデックスを指定します。
import numpy as np
# 1次元配列を作成
array_data = np.array([10, 20, 30, 40, 50])
# インデックス1から3までの要素を取得
sliced_array = array_data[1:4]
print(sliced_array)
[20 30 40]
配列の形状を確認する方法
配列の形状は、shape
属性を使用して確認できます。
1次元配列の場合、形状は要素数を示します。
import numpy as np
# 1次元配列を作成
array_data = np.array([10, 20, 30, 40, 50])
# 配列の形状を確認
shape = array_data.shape
print(shape)
(5,)
配列のデータ型を確認・変更する方法
配列のデータ型は、dtype
属性を使用して確認できます。
また、astype()メソッド
を使用してデータ型を変更することも可能です。
import numpy as np
# 1次元配列を作成
array_data = np.array([1, 2, 3, 4, 5], dtype=np.int32)
# データ型を確認
data_type = array_data.dtype
# データ型を変更
array_data = array_data.astype(np.float64)
print(data_type)
print(array_data.dtype)
int32
float64
これらの操作を通じて、NumPyの1次元配列を効果的に扱うことができます。
1次元配列の応用
配列の演算(加算、減算、乗算、除算)
NumPyの配列では、要素ごとの演算が簡単に行えます。
以下は、加算、減算、乗算、除算の例です。
import numpy as np
# 1次元配列を作成
array_a = np.array([1, 2, 3, 4, 5])
array_b = np.array([10, 20, 30, 40, 50])
# 演算
addition = array_a + array_b
subtraction = array_a - array_b
multiplication = array_a * array_b
division = array_a / array_b
print("加算:", addition)
print("減算:", subtraction)
print("乗算:", multiplication)
print("除算:", division)
加算: [11 22 33 44 55]
減算: [ -9 -18 -27 -36 -45]
乗算: [ 10 40 90 160 250]
除算: [0.1 0.1 0.1 0.1 0.1]
配列のソート
NumPyでは、numpy.sort()関数
を使用して配列をソートできます。
以下はその例です。
import numpy as np
# 1次元配列を作成
array_data = np.array([5, 2, 9, 1, 5, 6])
# 配列をソート
sorted_array = np.sort(array_data)
print("ソート後の配列:", sorted_array)
ソート後の配列: [1 2 5 5 6 9]
配列のフィルタリング
条件を満たす要素だけを抽出するフィルタリングが可能です。
以下は、特定の条件に基づいて要素をフィルタリングする例です。
import numpy as np
# 1次元配列を作成
array_data = np.array([10, 20, 30, 40, 50])
# 30より大きい要素をフィルタリング
filtered_array = array_data[array_data > 30]
print("フィルタリング後の配列:", filtered_array)
フィルタリング後の配列: [40 50]
配列の結合と分割
NumPyでは、numpy.concatenate()
を使用して配列を結合し、numpy.split()
を使用して配列を分割できます。
以下はその例です。
import numpy as np
# 1次元配列を作成
array_a = np.array([1, 2, 3])
array_b = np.array([4, 5, 6])
# 配列を結合
concatenated_array = np.concatenate((array_a, array_b))
# 配列を分割
split_arrays = np.split(concatenated_array, 2)
print("結合後の配列:", concatenated_array)
print("分割後の配列:", split_arrays)
結合後の配列: [1 2 3 4 5 6]
分割後の配列: [array([1, 2, 3]), array([4, 5, 6])]
配列のコピーとビューの違い
NumPyでは、配列をコピーする方法とビューを作成する方法があります。
コピーは新しい配列を作成し、ビューは元の配列を参照します。
以下はその違いを示す例です。
import numpy as np
# 1次元配列を作成
array_data = np.array([1, 2, 3, 4, 5])
# 配列のコピーを作成
array_copy = array_data.copy()
# 配列のビューを作成
array_view = array_data.view()
# 元の配列を変更
array_data[0] = 10
print("元の配列:", array_data)
print("コピー:", array_copy)
print("ビュー:", array_view)
元の配列: [10 2 3 4 5]
コピー: [1 2 3 4 5]
ビュー: [10 2 3 4 5]
このように、NumPyの1次元配列は多様な操作が可能で、データ処理に非常に便利です。
1次元配列の応用例
数列の生成と操作
NumPyを使用すると、さまざまな数列を簡単に生成し、操作することができます。
例えば、フィボナッチ数列を生成する場合、以下のように実装できます。
import numpy as np
# フィボナッチ数列を生成
def fibonacci(n):
fib_array = np.zeros(n, dtype=int)
fib_array[0], fib_array[1] = 0, 1
for i in range(2, n):
fib_array[i] = fib_array[i-1] + fib_array[i-2]
return fib_array
# 10項のフィボナッチ数列を生成
fib_sequence = fibonacci(10)
print("フィボナッチ数列:", fib_sequence)
フィボナッチ数列: [0 1 1 2 3 5 8 13 21 34]
データの前処理における1次元配列の利用
データ分析や機械学習の前処理では、1次元配列を使用してデータを正規化したり、欠損値を処理したりします。
以下は、データの正規化の例です。
import numpy as np
# サンプルデータ
data = np.array([10, 20, 30, 40, 50])
# 正規化
normalized_data = (data - np.min(data)) / (np.max(data) - np.min(data))
print("正規化されたデータ:", normalized_data)
正規化されたデータ: [0. 0.25 0.5 0.75 1. ]
グラフ作成のためのデータ準備
1次元配列は、グラフ作成のためのデータ準備にも利用されます。
Matplotlibを使用して、1次元配列をプロットする例を示します。
import numpy as np
import matplotlib.pyplot as plt
# x軸のデータ
x = np.linspace(0, 10, 100)
# y軸のデータ(サイン波)
y = np.sin(x)
# グラフを作成
plt.plot(x, y)
plt.title("サイン波")
plt.xlabel("x")
plt.ylabel("sin(x)")
plt.grid()
plt.show()

このコードを実行すると、サイン波のグラフが表示されます。
機械学習における特徴量のベクトル化
機械学習では、データを数値ベクトルに変換することが重要です。
1次元配列を使用して、テキストデータを数値ベクトルに変換する例を示します。
以下は、単純なBag of Wordsモデルの実装例です。
import numpy as np
# サンプルテキスト
documents = ["私は猫が好きです", "私は犬が好きです", "猫と犬は友達です"]
# 単語のリストを作成
words = set(" ".join(documents).split())
word_to_index = {word: i for i, word in enumerate(words)}
# 特徴量ベクトルを作成
def vectorize(document):
vector = np.zeros(len(word_to_index))
for word in document.split():
if word in word_to_index:
vector[word_to_index[word]] += 1
return vector
# 各文書をベクトル化
vectors = np.array([vectorize(doc) for doc in documents])
print("特徴量ベクトル:\n", vectors)
特徴量ベクトル:
[[0. 0. 1.]
[0. 1. 0.]
[1. 0. 0.]]
このように、1次元配列はさまざまな応用に利用され、データ処理や分析において非常に重要な役割を果たします。
まとめ
この記事では、NumPyを使用して1次元配列を作成し、操作する方法について詳しく解説しました。
配列の生成方法や演算、フィルタリング、ソート、結合、分割など、さまざまな機能を活用することで、データ処理や分析が効率的に行えることがわかりました。
これらの知識を活かして、実際のデータ分析や機械学習のプロジェクトに取り組んでみてください。