【问题标题】:Minimum of 4th Element in NxNx4 list (Python)NxNx4 列表中的第 4 个元素的最小值(Python)
【发布时间】:2015-09-02 06:11:08
【问题描述】:

您好,我一直在阅读如何找到多维列表的最小值,但如果我有一个 N x N x 4 列表,我如何获得每个第 4 个元素之间的最小值?所有其他示例都是使用实数索引的小示例列表。我想我需要用 N.... 来定义索引。

[[[0,1,2,3],[0,1,2,3],...N],[[0,1,2,3],[0,1,2,3],...N].....N]

然后是检索他们的索引。

我不知道该尝试什么。

如果有人对实际的代码感兴趣:

relative = [[[[100] for k in range(5)] for j in range(N)] for i in range(N)]

下面的内容是用满足数学方程的时间填充第 4 个元素。 relative 的第 0、第 1、第 2 和第 3 个元素具有位置和速度。第 4 个点是第 i 个和第 j 个粒子碰撞所用的时间(冗余值,如 i-i 或 j-i 用值 100 填充(因为它足够大,min 函数无法检索它)。我需要最短的碰撞时间(因此是第 4 个元素比较)

def time(relative):
i = 0
t = 0
while i<N: 
    j = i+1
    while j<N and i<N:
        rv = relative[i][j][0]*relative[i][j][2]+relative[i][j][1]*relative[i][j][3]     #Dot product of r and v
        if rv<0:
            rsquared = (relative[i][j][0])**2+(relative[i][j][1])**2
            vsquared = (relative[i][j][2])**2+(relative[i][j][3])**2
            det = (rv)**2-vsquared*(rsquared-diameter**2)
            if det<0:
                t = 100                        #For negative times, assign an arbitrarily large number to make sure min() wont pick it up.
            elif det == 0:
                t = -rv/vsquared
            elif det>0:
                t1 = (-rv+sqrt((rv)**2-vsquared*(rsquared-diameter**2)))/(vsquared)
                t2 = (-rv-sqrt((rv)**2-vsquared*(rsquared-diameter**2)))/(vsquared)
                if t1-t2>0:
                    t = t2
                elif t1-t2<0:
                    t = t1
        elif rv>=0:
            t = 100
        relative[i][j][4]=t                 #Put the times inside the relative list for element ij.
        j = j+1
    i = i+1
return relative

我试过了: t_fin = min(relative[i in range(0,N-1)][j in range(0,N-1)][4]) 哪个编译但总是返回 100,即使我已经检查过它不是最小的元素。

【问题讨论】:

  • 你能举个例子吗?简单的例子。
  • 你应该考虑使用numpy
  • 我已编辑帖子以获得更多信息。

标签: python list multidimensional-array


【解决方案1】:

如果你想要 NxNx4 列表的第 4 个元素的min

min([x[3] for lev1 in relative for x in lev1])

【讨论】:

    猜你喜欢
    • 2022-10-01
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多