NumPy配列にベクトルを追加する方法をわかりやすく解説
この記事では、NumPy配列に対してベクトル(1次元配列)を加算する方法を解説します。元となる配列とベクトルを定義し、それぞれを足し合わせて結果の配列を作成する流れを見ていきましょう。
アルゴリズム
- NumPy配列を定義する
- 加算するベクトルを定義する
- 元の配列と同じ形状の結果用配列を作成する
- 元の配列の各行にベクトルを加算する
- 結果の配列を出力する
サンプルコード
import numpy as np
original_array = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
print("Original Array: \n", original_array)
vector = np.array([1,1,0])
print("\nVector: ", vector)
result = np.empty_like(original_array)
for i in range(4):
result[i,:] = original_array[i,:] + vector
print("\nResult: \n", result)
実行結果
Original Array: [[ 1 2 3] [ 4 5 6] [ 7 8 9] [10 11 12]] Vector: [1 1 0] Result: [[ 2 3 3] [ 5 6 6] [ 8 9 9] [11 12 12]]
コードの解説
result = np.empty_like(original_array) の部分では、元の配列 original_array と同じ形状・同じデータ型を持つ空の配列 result を作成しています。その後、for ループで配列の行数分だけ繰り返し処理を行い、各行(result[i,:])に対して対応する行とベクトルの和を代入していきます。これにより、すべての行に同じベクトルが加算された新しい配列が得られます。
ブロードキャストを使えばもっと簡単に書ける
実はNumPyには「ブロードキャスト」という便利な機能があり、上記のような for ループは不要です。形状の異なる配列同士でも、自動的に形状が調整されて演算されます。以下のように1行で同じ結果が得られます。
result = original_array + vector
この書き方はコードが簡潔になるだけでなく、内部で最適化されたC言語レベルの処理が使われるため、大きな配列を扱う場合にはループ処理よりもはるかに高速です。NumPyで配列とベクトルの加算を行う場合は、基本的にブロードキャストを利用するのがおすすめです。
-
MatplotlibとNumPyで配列をグレースケール画像として保存・表示する方法
MatplotlibとNumPyを使えば、数値の配列(アレイ)を簡単にグレースケール画像として表示・保存できます。ここでは、5×5のランダムデータをグレースケール画像として描画する基本的な手順を紹介します。 実装の手順 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。 NumPyを使って5×5のランダムなデータを作成します。 カラーマップを「gray」に設定します。 imshow() メソッドを使ってデータを画像としてプロットします。 図を画面に表示するには show() メソッドを使用します。 コード例 import numpy as np from mat
-
Tkinterで画像を追加・表示する方法を解説!Pillowとfiledialogの使い方
画像は、あらゆるアプリケーションにおいて非常に有用な要素のひとつです。Pythonでは、Pillow(PIL)パッケージを利用することで、Tkinterアプリケーション内でも簡単に画像を扱うことができます。画像の読み込みや抽出、画像ペインの設定など、便利な機能が多数用意されています。 サンプルコード:ダイアログで選択した画像を表示する 以下の例では、ユーザーがファイルダイアログから画像を選択し、その画像をLabelウィジェットを使ってウィンドウ上に表示します。 #Tkinterライブラリをインポート from tkinter import * from tkinter import ttk