Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在嵌套列表中进行多矢量点积?_Python_Numpy - Fatal编程技术网

Python 如何在嵌套列表中进行多矢量点积?

Python 如何在嵌套列表中进行多矢量点积?,python,numpy,Python,Numpy,我试图得到嵌套列表中的向量点积 例如: A = np.array([[1,2,1,3],[2,1,2,3],[3,1,2,4]]) 我试图得到: B = [[15], [19, 23]] 其中15=np.点(A[0],A[1]) 19=np.点(A[0],A[2]) 23=np.点(A[1],A[2]) B中的第一个内部_列表是A[0]和A[1]的点积 B中的第二个内部列表是 [0]和[2]的点积,[1]和[2]的点积 我试图用python编写一些循环,但失败了 如何在Python中获得B?

我试图得到嵌套列表中的向量点积 例如:

A = np.array([[1,2,1,3],[2,1,2,3],[3,1,2,4]])
我试图得到:

B = [[15], [19, 23]]
其中15=np.点(A[0],A[1])

19=np.点(A[0],A[2])

23=np.点(A[1],A[2])

B中的第一个内部_列表是A[0]和A[1]的点积

B中的第二个内部列表是 [0]和[2]的点积,[1]和[2]的点积 我试图用python编写一些循环,但失败了
如何在Python中获得B?

一个迭代器类,它吐出与B相同的元素。 如果您想要完整的列表,您可以
list(iter\u dotprod(A))

例如:

iter\u dotprod类:
定义初始化(自,嵌套数组):
self.nested\u arr=nested\u arr
self.hist=[]
定义(自我):
self.n=0
回归自我
定义下一个(自我):
如果self.n>len(self.nested_arr)-2:
提出停止迭代
res=np.dot(self.nested\u arr[self.n],self.nested\u arr[self.n+1])
self.hist.append(res)
self.n+=1
返回self.hist
A=np.数组([[1,2,1,3],[2,1,2,3],[3,1,2,4])
tt=国际热核实验堆dotprod(A)
对于iter_dotprod(A)中的b:
印刷品(b)

这里是一个显式for循环,与列表理解解决方案相结合:

In [1]: import numpy as np

In [2]: A = np.array([[1,2,1,3],[2,1,2,3],[3,1,2,4]])

In [5]: def get_dp(A):
   ...:     out = []
   ...:     for i, a in enumerate(A[1:]):
   ...:         out.append([np.dot(a, b) for b in A[:i+1]])
   ...:     return out

In [6]: get_dp(A)
Out[6]: [[15], [19, 23]]

说明:for循环从第2个元素开始运行,列表理解从开始运行到当前迭代的元素

我不确定我是否理解你对你要做的事情的解释,你能以某种方式扩展它吗?旁注:如果你尝试做普通for循环,不应该使用
list
作为变量,因为它是a,我试图得到B,B[0]是[1]点a[0],B[1]是[0]点a[2]和[1]点a[2],B[2]将是[0]点a[3],a[1]点a[3],a[2]点A[3]…等等这一个对我有效
out=[[np.dot(A[0],A[1]),[np.dot(A[0],A[2]),np.dot(A[1],A[2])]
。为什么需要循环?如果有很多A,那么在上面的行中迭代A我试图写一个函数来处理如果有很多列表嵌套在A中