python – numpy数组项目之间的最小平方差异
发布时间:2020-12-20 13:32:02 所属栏目:Python 来源:网络整理
导读:我刚开始学习一些numpy因为 High performance calculation of least squares difference from all possible combinations (n lists): 现在我对计算很不满意,可以使用一些帮助. 我有一个numpy数组对象,如下所示: itemsarray([[ 246,1143,1491,...,1167,325,
我刚开始学习一些numpy因为
High performance calculation of least squares difference from all possible combinations (n lists):
现在我对计算很不满意,可以使用一些帮助. 我有一个numpy数组对象,如下所示: >>> items array([[ 246,1143,1491,...,1167,325,1158],[ 246,519,507,[1491,246,1158]]) 我希望得到所有成员之间差异最小的阵列数,一个numpythonic版本: for num,item in enumerate(items): #Calculate for each list of items for n in range(len(item)): for i in range(n,len(item)): dist += (item[n]-item[i])**2 #Key formula if dist>min_dist: #This is a shortcut break else: continue break if min_dist is None or dist < min_dist: min_dist = dist best = num #We get the number of the combination we want 我会很感激任何提示. 解决方法
初始化您的NxM阵列:
>>> import numpy as np >>> items = np.random.random_sample((10,3)) 计算每个N M维向量的所有元素之间的平方和,并将结果存储在列表中: >>> sq = [(np.subtract.outer(item,item) ** 2).sum() for item in items] 找到所有元素之间具有最小平方和的向量索引: >>> best_index = np.argmin(sq) 或者,为了避免中间列表: best = np.inf best_index = None for i,item in enumerate(items): ls = (np.subtract.outer(item,item) ** 2).sum() if ls < best: best = ls best_index = i (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |