Pythonで2つの配列の内積を求める方法|numpy.inner()の使い方を解説
Pythonで2つの配列の内積(Inner Product)を求めるには、NumPyの numpy.inner() メソッドを使用します。1次元配列の場合は通常のベクトルの内積が計算され、多次元配列の場合は最後の軸に沿った要素ごとの積の総和が返されます。引数には2つのベクトル a と b を指定し、a と b がスカラーでない場合は、それぞれの最後の次元が一致している必要があります。
内積を求める手順
まず、必要なライブラリをインポートします。
import numpy as np
array() メソッドを使って、2つの1次元配列(NumPy配列)を作成します。
arr1 = np.array([5, 10, 15])
arr2 = np.array([20, 25, 30])
作成した配列を表示して確認します。
print("Array1...\n", arr1)
print("\nArray2...\n", arr2)
両配列の次元数(ndim)を確認します。
print("\nDimensions of Array1...\n", arr1.ndim)
print("\nDimensions of Array2...\n", arr2.ndim)
続いて、両配列の形状(shape)を確認します。
print("\nShape of Array1...\n", arr1.shape)
print("\nShape of Array2...\n", arr2.shape)
最後に、numpy.inner() メソッドを使って2つの配列の内積を計算します。
print("\nResult (Inner Product)...\n", np.inner(arr1, arr2))
サンプルコード全体
ここまでの手順をまとめた完全なサンプルコードは以下の通りです。
import numpy as np
# array() メソッドで2つの1次元配列を作成
arr1 = np.array([5, 10, 15])
arr2 = np.array([20, 25, 30])
# 配列を表示
print("Array1...\n", arr1)
print("\nArray2...\n", arr2)
# 次元数を確認
print("\nDimensions of Array1...\n", arr1.ndim)
print("\nDimensions of Array2...\n", arr2.ndim)
# 形状を確認
print("\nShape of Array1...\n", arr1.shape)
print("\nShape of Array2...\n", arr2.shape)
# numpy.inner() で内積を計算
print("\nResult (Inner Product)...\n", np.inner(arr1, arr2))
実行結果
Array1...
[ 5 10 15]
Array2...
[20 25 30]
Dimensions of Array1...
1
Dimensions of Array2...
1
Shape of Array1...
(3,)
Shape of Array2...
(3,)
Result (Inner Product)...
800
このように、np.inner(arr1, arr2) を呼び出すだけで、2つの配列の内積「800」が簡単に求められました。内積は機械学習や信号処理など、さまざまな分野で頻繁に使われる重要な演算なので、ぜひ覚えておきましょう。
-
Pythonで2つのリストの要素の積からk番目に大きい値を求めるプログラム
整数を含む2つのリスト p と q が与えられたとします。この問題では、両リストの要素をすべて掛け合わせた積の中から、k番目に大きい値(インデックスは0から開始)を求めます。 たとえば、入力が p = [2, 5]、q = [6, 8]、k = 2 の場合、出力は 16 になります。 考えられる積は次の4つです。 2 × 6 = 12 2 × 8 = 16 5 × 6 = 30 5 × 8 = 40 これらを降順に並べると [40, 30, 16, 12] となるため、インデックス2の要素、すなわち求める答えは 16 です。 解法のアプローチ すべての組み合わせの積を計算してソートする方法も
-
Pythonで2つの配列の共通部分(交差)を効率的に求める方法
問題概要2つの配列 A と B が与えられたとき、これらの配列に共通して含まれる要素(交差・共通部分)を求めます。例えば、A = [1, 4, 5, 3, 6]、B = [2, 3, 5, 7, 9] の場合、両方の配列に存在する要素は 3 と 5 だけなので、結果は [3, 5] となります。この種の問題では重複の扱いがポイントになります。ある要素が両方の配列に複数回現れる場合は、その出現回数のうち少ない方の回数だけ結果に含める必要があります。解法のアプローチこの問題は、ハッシュマップ(Pythonでは辞書型 dict)を使って要素の出現頻度を管理することで、効率的に解くことができます。手順