加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读