【Python】for文とnp.arrayを組み合わせて使う

【Python】for文とnp.arrayを組み合わせて使う

for文とnp.arrayの概要

Pythonでは `for` 文を使って `numpy` の `np.array` を反復処理できます。しかし、`numpy` ではベクトル化処理が推奨されるため、場合によっては `for` 文を使わない方が効率的です。

基本的なfor文の使い方

まず、Pythonの `for` 文の基本的な構文を確認しましょう。

numbers = [1, 2, 3, 4, 5]
for num in numbers:
    print(num)

このコードではリスト `numbers` の各要素を `num` に代入し、順番に出力します。

np.arrayに対するfor文

`numpy` の `np.array` に対しても `for` 文を使うことができます。

import numpy as np

arr = np.array([10, 20, 30, 40, 50])
for value in arr:
    print(value)

通常のリストと同じように、各要素を順番に処理できます。

多次元配列のループ処理

多次元の `np.array` を `for` 文で処理する方法を見ていきます。

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

for row in arr_2d:
    print(row)

この場合、`row` には各行の配列が代入されます。

要素単位で処理するには `flatten()` を使う方法もあります。

for value in arr_2d.flatten():
    print(value)

for文を使わないベクトル化処理

`numpy` ではループを使わず、ベクトル演算を活用すると効率的です。

arr = np.array([1, 2, 3, 4, 5])
arr_squared = arr ** 2  # 各要素を2乗
print(arr_squared)

`for` 文を使わずに高速に計算できます。

enumerateとzipの活用

インデックスを取得しながら `for` 文を使うには `enumerate()` を使います。

arr = np.array([10, 20, 30])
for i, value in enumerate(arr):
    print(f"Index {i}: Value {value}")

複数の配列を同時にループ処理するには `zip()` を使います。

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

for a, b in zip(arr1, arr2):
    print(a + b)

ループ処理の最適化

`numpy` では `for` 文よりも `vectorize` や `map` を使うことで高速化できます。

vectorized_function = np.vectorize(lambda x: x**2)
result = vectorized_function(arr)
print(result)

この方法により、`for` 文を使わずに要素ごとの処理ができます。

コメントを残す

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