Java Python矩阵乘法

Java Python矩阵乘法,java,python,matrix,Java,Python,Matrix,我很难理解这个python脚本。有python大师愿意翻译几行吗?我主要是说最后两个。这两条线似乎塞满了很多东西。我的主要动机是将这个算法转换成Java u=matrix( [[1,2,2], [-2,-1,-2], [2,2,3]] ) a=matrix( [[1,2,2], [2,1,2], [2,2,3]] ) d=matrix( [[-1,-2,-2], [2,1,2], [2,2,3]] ) m=[ array([3,4,5]) ] while m: for i in m:

我很难理解这个python脚本。有python大师愿意翻译几行吗?我主要是说最后两个。这两条线似乎塞满了很多东西。我的主要动机是将这个算法转换成Java

u=matrix( [[1,2,2], [-2,-1,-2], [2,2,3]] )
a=matrix( [[1,2,2], [2,1,2], [2,2,3]] )
d=matrix( [[-1,-2,-2], [2,1,2], [2,2,3]] )
m=[ array([3,4,5]) ]
while m:
  for i in m:
    yield i
  g=( (i*j).getA1() for i in m for j in (u,a,d) )
  m=[ i for i in g if max is None or sum(i)<=max ]

这应该更容易转换为Java:

while len(m) != 0:
      for arr in m:
          queue.put(arr) # yield arr
      newm = []
      for arr in m:
          for mat in (u,a,d):
              i = multiply_array_matrix(arr, mat).getA1()
              if max_ is None or sum(i) <= max_:
                 newm.append(i)
      m = newm

这应该更容易转换为Java:

while len(m) != 0:
      for arr in m:
          queue.put(arr) # yield arr
      newm = []
      for arr in m:
          for mat in (u,a,d):
              i = multiply_array_matrix(arr, mat).getA1()
              if max_ is None or sum(i) <= max_:
                 newm.append(i)
      m = newm

多亏了J.F.Sebastian和对Python的更多研究,但主要是对J.F.的研究,我才能够将其转换为Java。我改变名字不仅是为了保护无辜者,而且是为了让它成为一个更具自我记录能力的网站


用队列取代屈服功能是让我走上正轨的火花。因为Java不能在u,a,d中做mat,所以我不得不把它分成三行非常相似的代码。我在这篇文章中删掉了一些内容,但在我完成的代码中,我在这三行中调用了一个方法,其中包括,这要感谢J.F.Sebastian和对Python的进一步研究,但主要是J.F.,我能够将其转换为Java。我改变名字不仅是为了保护无辜者,而且是为了让它成为一个更具自我记录能力的网站


用队列取代屈服功能是让我走上正轨的火花。因为Java不能在u,a,d中做mat,所以我不得不把它分成三行非常相似的代码。我为这篇文章删掉了一些内容,但在我完成的代码中,我在这三行中调用了一个方法,其中包括Where is max defined?他们真的不应该定义名为max的变量,因为max是一个内置函数。没有矩阵和max的定义,很难理解发生了什么。我真的不明白为什么会有这样的收益率I。不管怎样,最后一行可能是1x3矩阵乘以3x3矩阵,而getA1可能只返回结果的第一行。最后一行过滤这些结果,检查这一行中的值之和是否小于某个最大值max。不管怎样,您确定逐字翻译为Java会产生好的和/或快速的Java代码吗?Java是否有类似的结果?如果不是,直接转换可能会很棘手。最大值在哪里定义?他们真的不应该定义名为max的变量,因为max是一个内置函数。没有矩阵和max的定义,很难理解发生了什么。我真的不明白为什么会有这样的收益率I。不管怎样,最后一行可能是1x3矩阵乘以3x3矩阵,而getA1可能只返回结果的第一行。最后一行过滤这些结果,检查这一行中的值之和是否小于某个最大值max。不管怎样,您确定逐字翻译为Java会产生好的和/或快速的Java代码吗?Java是否有类似的结果?如果不是,直接转换可能会很棘手。mat在u,a,d中的东西:ArrayList矩阵。。。矩阵矩阵:矩阵。我已经使用queue.putarr强调了收益率的并发方面,即,如果queue.maxsize==1,那么直到在使用者线程中调用queue.get,queue.putarr才会阻塞。它还支持无限循环,结果列表的大小是无限的。在单个线程中,您可以使用callbackarr而不是queue.putarr来实现相同的效果。。。矩阵矩阵:矩阵。我已经使用queue.putarr强调了收益率的并发方面,即,如果queue.maxsize==1,那么直到在使用者线程中调用queue.get,queue.putarr才会阻塞。它还支持无限循环,结果列表的大小是无限的。在单个线程中,您可以使用callbackarr而不是queue.putarr来实现相同的效果。