1

配列の 1 つの要素と他のすべての要素の内積を取る簡単な方法はありますか? 与えられた:

array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

結果を取得したい:

array([  32.,   50.,  122.])

つまり、a[0] ドット a[1]、a[0] ドット a[2]、a[1] ドット a[2]。

私が扱っている配列は正方形ではありません。それはほんの一例です。

ありがとう!

4

3 に答える 3

4
>>> X = scipy.matrix('1 2 3; 4 5 6; 7 8 9')
>>> X*X.T
matrix([[ 14,  32,  50],
        [ 32,  77, 122],
        [ 50, 122, 194]])

それはあなたが望んでいた以上のものをあなたに与えますが、それは紛れもなく簡単です.

または

>>> X = scipy.array([[1,2,3], [4,5,6], [7,8,9]])
>>> scipy.dot(X, X.T)
array([[ 14,  32,  50],
       [ 32,  77, 122],
       [ 50, 122, 194]])
于 2011-01-17T20:14:34.193 に答える
1

numpy を使用しているように見えるので:

from itertools import combinations
import numpy as np

dot_products = [np.dot(*v) for v in combinations(vectors, 2)]

これをチェックアウトしたところ、私のpythonインストールで動作するようです。

于 2011-01-17T20:08:46.913 に答える
0

ここに別のものがあります:

>>> a = numpy.array([[1, 2, 3],
...        [4, 5, 6],
...        [7, 8, 9]])
>>> numpy.array([numpy.dot(a[i], a[j]) for i in range(len(a)) for j in range(i + 1, len(a))])
array([ 32,  50, 122])
于 2011-01-17T20:25:51.493 に答える