数组中每个元素与每个其他元素的点积

发布于 2024-10-12 22:09:48 字数 277 浏览 6 评论 0原文

有没有一种简单的方法来获取数组中一个元素与其他元素的点积? 所以给出:

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]。

我正在使用的数组不是方形的;这只是一个例子。

谢谢!

Is there an easy way to take the dot product of one element of an array with every other?
So given:

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

I would like to get the result:

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

I.e. a[0] dot a[1], a[0] dot a[2], a[1] dot a[2].

The array I am working with will NOT be square; that's just an example.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

伏妖词 2024-10-19 22:09:48
>>> 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]])
>>> 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]])

It gives you more than what you wanted, but it's undeniably easy.

Or

>>> 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]])
等数载,海棠开 2024-10-19 22:09:48

因为看起来你正在使用 numpy:

from itertools import combinations
import numpy as np

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

我检查了这个,它似乎适用于我的 python 安装。

Since it looks like you are using numpy:

from itertools import combinations
import numpy as np

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

I checked this out and it appears to work on my python install.

若水微香 2024-10-19 22:09:48

这是另一个:

>>> 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])

Here's another one:

>>> 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])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文