我有一个名为dist
的正方形数组n x n
,一个名为particion
的向量m<n
,其索引从0
到{{1}另一个名为n
的大小为incidencia
的人。一切都是使用NumPy存储的。
我想要找到的是m
的最小值受两个条件限制并将参数作为向量捕获。这是一个粗略的代码,从C ++翻译成python:
dist
我觉得这不是找到最小值的最佳方法,因为这个函数需要花费太多时间来计算,即使在C ++中也是如此。有没有更好的办法?更多&#34; python-eske&#34;方式是什么?
答案 0 :(得分:0)
我不知道你实际数据的范围,所以我已经生成了一些随机数据。
from random import randrange
m, n = 100, 200
dist = [[i+j for j in range(n)] for i in range(n)]
part = [randrange(n) for k in range(m)]
inci = [randrange(9) for k in range(m)]
# keep only items in `part` where corresponding `inci` value < 2
part = [p for p,i in zip(part, inci) if i < 2]
# check dist for all couples in `part` and extract minimal value
d = min(dist[pi][pj] for pi in part for pj in part)
此代码仅提供最小距离。如果您还需要达到最小分数的索引,最好切换到numpy
并使用它提供的argmin
函数。