提问人:n_cen 提问时间:11/16/2023 最后编辑:n_cen 更新时间:11/16/2023 访问量:40
Python - 将 ndarray 每行的最小值添加到列表中。如果最小的数字已经在列表中,则添加下一个最小的数字
Python - Add the smallest value from each row of an ndarray to a list. If the smallest number is already in list , then add next smallest
问:
假设我有一个 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]
答:
1赞
Justin
11/16/2023
#1
由于每一行都已按最小值排序,因此我们可以这样做:
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
评论
1赞
n_cen
11/16/2023
伟大!因此,我使用上面的列表创建了 ndarray 以进行娱乐。如果我从 ndarray A 开始,那么我只会执行 A.tolist() 然后遍历排序列表。谢谢!
评论