Python - 将 ndarray 的每一行中的最小值添加到列表中。如果最小的数字已经在 list 中,则添加下一个最小的数字

问题描述 投票:0回答:1

假设我有一个 4x4 数组,每一行都已按最小值排序。我想创建一个列表,其中包含每个数组行的最小值而不重复值。因此,如果列表中已经存在最小值,我们应该取下一个最小值并将其添加到列表中。

数组的每一行都已按最小值排序

set=[ [1,10,20,30],[10,50,60,70],[10,20,50,60],[1,20,25,65] ]
A=np.asarray(set) #A[0,0] = 1 ; A[3,3] = 65
minval=[] #list to append min values to

所以最终列表将是[1,10,20,25]

我首先尝试迭代 A[i,j] 并附加到 minval(如果它不在 minval 中),但这甚至不起作用。之后,一旦我们从 A[i] 追加一个值,我就不知道如何打破循环

minval=[]
for i in A: #expect A[0] through A[3]
    for j in A[i]: #expect A[0,0] through A[3,3]
        minval.append(A[i,j]) if A[i,j] not in minval else minval
        

这已经给了我一个错误,因为 i 的第一个值是一个数组,而不是像我期望的那样 y[0]

python list numpy-ndarray
1个回答
0
投票

由于每行已经按最小值排序,我们可以这样做:

list = [ [1, 10, 20, 30], [10, 50, 60, 70], [10, 20, 50, 60], [1, 20, 25, 65] ]
new_list = []

for row in list:
    for col in row:
        if col not in new_list:
            new_list.append(col)
            break
© www.soinside.com 2019 - 2024. All rights reserved.