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中