Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何找到每个列索引的列表,其中包含n个最小值的行索引?_Python_List_Numpy_Arraylist_Multidimensional Array - Fatal编程技术网

Python 如何找到每个列索引的列表,其中包含n个最小值的行索引?

Python 如何找到每个列索引的列表,其中包含n个最小值的行索引?,python,list,numpy,arraylist,multidimensional-array,Python,List,Numpy,Arraylist,Multidimensional Array,我将60个交付点和6个接收点之间的距离存储在以下列表中(60行x 6列)。每个列索引都是接收点的id。每行索引是一个交付点的id&每行中的值包含接收点和交付点之间的距离值。我希望输出是列表的列表,第一个列表应该是第一个接收点的列表,其中包含最靠近它的交付点的Id(即行索引)(即具有最小距离的交付点)。如果接收点的ID超过10个,则第二个接收点应采用交付点的索引 [[8.8571112536429428, 8.9401324296172984, 11.610640135587387, 13.695

我将60个交付点和6个接收点之间的距离存储在以下列表中(60行x 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], [10.167102743733482, 9.9524125047033163, 12.07343660126983, 12.162682014308746, 12.675617848939511, 15.039512303870563], [10.090871086547825, 9.8115213211525898, 11.790126440337367, 11.593233926195705, 12.103574298115904, 14.4820293513395], [9.5274386079952311, 9.3526986516250226, 11.585339019955278, 12.218449369065173, 12.744717298249004, 15.029533890574408], [8.220431544246674, 8.1871820395080306, 6.6144875520750475, 13.992293052552345, 14.331397784009633, 14.059961596343157], [7.9204103100031089, 7.9698068552556149, 6.7155093848996588, 14.257923888026014, 14.615784279583281, 14.449918280409948], [9.7135759858996735, 9.6746983762992613, 7.8803297497398228, 14.876430368853811, 15.169432219711698, 14.60912585951378], [9.4094955419366002, 9.4098722332874605, 7.7674718374559681, 14.927743015130112, 15.236306897790202, 14.761615339497585], [9.2122408466853098, 9.1881250247309083, 7.4942137402393918, 14.647946737872344, 14.958143976136816, 14.50013742929014], [8.9841934720188092, 8.8520065421095069, 6.8626506854553613, 13.831477987463257, 14.132583493256959, 13.647221016966505], [9.5840483074527274, 9.2941594702052885, 6.8164835478554302, 13.046024885802945, 13.301229533671846, 12.594096236183471], [9.9445372122605349, 9.6058614400636344, 6.9916200564550426, 12.835254578479189, 13.067358236389927, 12.248723563747451], [10.416198053229536, 10.038019172566832, 7.320744269707677, 12.724667844353796, 12.928853613651627, 11.974782965066465], [8.3726156127310514, 8.0335106590514389, 5.5418676073077071, 12.193703516957356, 12.4955241944979, 12.074184014412694], [15.343282837426498, 14.612810748021396, 11.719837176504152, 10.815363143002003, 10.61704360015848, 8.1978064656896166], [14.763900069696792, 14.036444869869143, 11.139254046384917, 10.507037580860795, 10.341445856746137, 8.0158204757921609], [15.050519252702051, 14.304472484980723, 11.444343208498724, 10.317148429543209, 10.11832886496242, 7.7084235654966227], [14.633395741678543, 13.884783308045476, 11.032004790258792, 10.008341293867591, 9.8302540420848139, 7.4838052876071925], [14.687538814297087, 13.928120554701081, 11.102101753634196, 9.8143890338406727, 9.6221844290320888, 7.242858836040198], [16.206771343990855, 15.423094868219572, 12.667874155296383, 10.592013153020433, 10.341381213002265, 7.828128689132094], [15.619986824578037, 14.839512805989022, 12.07134562493208, 9.941248894014036, 9.6730238906659896, 7.1204847032362064], [15.466510837719252, 14.722650885781356, 11.859584227303976, 11.005355907973096, 10.841457181104625, 8.5355793396076542], [15.881628044920925, 15.114979112353129, 12.303781665228508, 10.431552266627245, 10.168094895619543, 7.6172562892884867], [15.990055281404205, 15.228998548281766, 12.402303221302091, 10.628004725315831, 10.366298047990778, 7.8161346563914886], [15.736154746045536, 15.105060475683793, 15.655389922101902, 10.257378116673564, 10.437487648335722, 12.986975605774582], [15.548179177256573, 14.94440218395493, 15.626456150675166, 10.546940280185749, 10.759208435116861, 13.341769506218135], [16.056200839858427, 15.443052455414923, 16.067256415048941, 10.75556596930948, 10.936300952104936, 13.484265936117088], [16.030713205411661, 15.438181246885511, 16.155466542456864, 11.045800849955867, 11.244929483214554, 13.812515619985064], [16.313052682304914, 15.720770108649377, 16.431112335118467, 11.249958108935862, 11.437150989913047, 13.990677762284269], [18.105447981028753, 17.497815792108987, 18.118444773387797, 12.607951345201421, 12.74911601436634, 15.240500388084236], [17.142295998639362, 16.516014456952504, 17.049403499471961, 11.356260920035698, 11.477709879833039, 13.940757339137166], [16.880960363087262, 16.295391156594004, 17.047298473739879, 12.042815464061373, 12.253838789738293, 14.833741298425258], [16.829066450969425, 16.186260528460714, 16.648467871695775, 10.863969840137969, 10.981264441642955, 13.441364459426584], [16.706770057748134, 16.057278389618567, 16.489880994158096, 10.66731590031403, 10.782806110209037, 13.241623134667138], [6.2381381218067373, 6.2194888862642577, 5.3123877587192734, 13.032731934009478, 13.436570966737028, 13.604318730460024], [5.9396526675633359, 6.0510670977394989, 5.6550994902754956, 13.377297348970819, 13.796901168827901, 14.061779244814891], [5.7459686443632254, 5.7337795314951476, 5.128072879443855, 12.839514057015172, 13.259457905642641, 13.544229052525234], [5.4396818820127448, 5.5212829292054373, 5.3478158305128609, 13.015711451040913, 13.448367961719672, 13.817821744765213], [5.2486124965428793, 5.2771383616456671, 5.1280728794438764, 12.761792631597269, 13.198552383994748, 13.606301100241394], [5.1357507357534091, 4.8934821813911116, 4.3425562735183956, 11.909231180299701, 12.347349228460095, 12.796008934616751], [6.0624496974579065, 5.5239362160282885, 3.2608073018340953, 10.803317648207225, 11.212939401191328, 11.513024080838051], [6.541065357416608, 5.9465219070465052, 3.21987168560677, 10.433571173595469, 10.825594109895922, 11.031083867922506], [7.1018039265314412, 6.4759823196077377, 3.5879904824168545, 10.133155083894605, 10.500290611504337, 10.569106489501804], [6.6159847203117996, 6.1484976847959834, 3.693862394938451, 11.104160934731619, 11.485287311220674, 11.58502506380087], [13.430750084712624, 12.586122124543479, 10.179997227804684, 6.8411749179384573, 6.6360404138368807, 4.4413375942891191], [12.860249089041771, 12.013111253910548, 9.6424305371007595, 6.5265483990909088, 6.3870431740969478, 4.5327714458446025], [13.272600943061237, 12.417526751742299, 10.11455042396398, 6.3481713853356778, 6.1413498052896012, 4.0598343957949465], [12.899680340493058, 12.040738918624724, 9.7922256763619799, 6.0320947971518875, 5.8694747994377581, 4.0961285664368985], [13.039043430532091, 12.175521475480428, 9.9819378451487175, 5.846777676230575, 5.6537489732340989, 3.8430711005412199], [14.743170256318038, 13.872379058466487, 11.772960143566037, 6.7282980603815119, 6.4067364710835779, 4.1781427489974972], [14.104799998788597, 13.236833606935109, 11.078799794841727, 6.1159297631963634, 5.7670825457695942, 3.3073563334009304], [13.704976338118522, 12.847247158071006, 10.590221043670937, 7.0291094112573935, 6.8972824227028688, 5.2571510859283084], [14.230441720137883, 13.369755506528303, 11.107917378625881, 6.5757610778969147, 6.2444587313792308, 3.719834427050813], [14.286267358713269, 13.42888235219627, 11.127661155677838, 6.7622316296131206, 6.4369851286351629, 3.9009661834155436]]
我的代码如下所示,但不起作用:

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 = 60
numberOfcolumns = 6
for 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)

非常感谢你的帮助

以下是基于我对您的问题、所需输出和数据的理解而进行的尝试。我将数据转换成一个数组,以利用
np.argsort()
。它返回排序数组的索引,由于您对前10个
n=10
感兴趣,因此可以使用切片
[0:n]
仅获取前10个最小值的索引
data[:,i]
为您提供
i
th列的值。
i
的值从
0
5
不等,因为总共有6列。最后,使用下面代码的第三行列表理解来执行所有这些操作P.S:如果下面的输出不是您想要的,请告诉我,我将相应地更新我的解决方案。

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], ...]

这可能会像你想的那样简单。 阅读您的数据:

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
现在我们有了普通数组minu 0_索引,它包含前10个最小值,如果您重复所有这些(读取数据除外)10次。
要获得其他列,只需将[0]替换为列编号。

[2,52,32,43,12,31,45,59,1,9]
不是第一列前10个最小值的索引。我为第一列得到的值是
[45、44、43、42、41、46、40、47、49、48]
。你能检查一下你想要的输出吗?我也看不到您的输出与从
GetDistance
返回的
distance
之间有任何联系。您写道,您需要前10个最小值。距离是如何计算的?谢谢你的尝试。对不起,我可能问得不对。为了解释更多,让我们假设我有60个交货点和6个收货点。每个列索引都是接收点的id。每行索引都是交货点的id,行中的值包含收货点和交货点之间的距离。我希望输出是每个接收点的列表,其中包含距离交付点(最小距离)最近的交付点Id(即行索引)。如果接收点的数量超过10个,则第二个接收点应采用交付点的索引。
data[np.argmin(data[:, [0]])][0] = 100