第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何為每個列索引找到一個包含n個最小值的行索引的列表?

如何為每個列索引找到一個包含n個最小值的行索引的列表?

牛魔王的故事 2021-05-12 17:22:19
我在列表的以下列表(60行x 6列)中存儲了60個交貨點和6個接收點之間的距離。每個列索引都是接收點的ID。每行索引是傳遞點的ID,每行中的值包含接收點和傳遞點之間的距離值。我希望輸出是列表的列表,第一個列表應該用于第一個接收點,其中包含離它最近的傳遞點(即行索引)的ID(即具有最小距離的傳遞點)。如果接收點的ID超過10個,則第二個接收點應采用傳遞點的索引。[[8.8571112536429428, 8.9401324296172984, 11.610640135587387, 13.695908399729435, 14.239701934343463, 16.347271804009676], [9.1542700414794123, 9.301375660862357, 12.042023807282666, 14.278330930177338, 14.822147396293593, 16.926281570649053], [9.3549480280083053, 9.4363340620527882, 12.0922348611257, 13.959594685254489, 14.499353590653021, 16.657032572800848], [9.6487557392404799, 9.7657869305623226, 12.460747138875766, 14.374363831842004, 14.913246132168481, 17.078816216816612], [9.8500830619048756, 9.941928195489762, 12.600424422369565, 14.320647726487726, 14.856529889513659, 17.053401733435681], [10.208637100585225, 10.207676145898613, 12.723522650837346, 13.856177303497407, 14.382791865423997, 16.658587307014372], [10.1910872674719, 10.037355180092288, 12.283344476416266, 12.66725004132222, 13.183857132732589, 15.526690228503712], 我的代碼如下所示無法正常工作:def GetDistance(i,k):    distance = 4.1*(i**2) - 6.2*(k**2)    return distance def my_min(sequence):   low = sequence[0]    for i in sequence:       if i < low:          low = i   return sequence.index(low)list = []listOflist = []numberOfrows = 60numberOfcolumns = 6for i in range(numberOfrows):  for k in range(numberOfcolumns):       distance = GetDistance(i,k) ## get the distance value from another function      list.append(distance)   columnIndex = my_min(list[numberOfcolumns*i:(i+1)*numberOfcolumns])   columnIndices.append(columnIndex)所需的結果如下所示:listOflist = [[rowId,rowId,rowId,rowId,rowId,rowId,rowId,rowId,rowId,rowId] # This is the list of the first column index and the values inside are the row indices with top 10  minimum values ,[3,14,42,35,53,27,19,0,34,22,7] # second column index with the row indices of the top 10 values,... 非常感謝您的幫助。
查看完整描述

2 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

這是基于我對您的問題,所需輸出和數據的理解而進行的嘗試。我將數據轉換為數組以使用np.argsort()。它返回排序后的數組的索引,并且由于您對前10個值感興趣n=10,因此可以使用切片[0:n]來僅獲取前10個最小值的索引。data[:,i]給你i第th列的值。的值i從0到變化,5因為您總共有6列。最后,您將使用列表理解來完成所有這些操作,這是下面代碼的第三行。PS:如果以下輸出不是您想要的,請告訴我,我將相應地更新我的解決方案。


data = np.array([[8.8571112536429428, 8.9401324296172984...]])

n = 10 # For top n minimum values

listOflist = [list(np.argsort(data[:,i])[0:n]) for i in range(numberOfcolumns)]

print (listOflist)

輸出


[[45, 44, 43, 42, 41, 46, 40, 47, 49, 48], [45, 44, 43, 46, 42, 47, 41, 49, 40, 48], ...]


查看完整回答
反對 回復 2021-05-25
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

如您所想,這可能會更簡單。讀取您的數據:

data = np.array(the array that u gave us above)

然后您可以使用numpy格式逐列閱讀:

min_0_indices.append(np.argmin(data[:, [0]]))

“:”表示“ 0”列中的每一行。同樣使用np.argmin我們得到最小值的索引。

然后我們可以設置data [index] [0] = 100的值,這樣當我們重復搜索最小值時,就不會再次選擇它。

data[np.argmin(data[:, [0]])][0] = 100

現在,我們有了普通數組min_0_indices,如果您重復所有這些操作(讀取數據除外)10次,則該數組將包含前10個最小值。要獲取其他列,只需將[0]替換為columnnuber。


查看完整回答
反對 回復 2021-05-25
  • 2 回答
  • 0 關注
  • 217 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號