当前位置: 首页 > news >正文

phpwind怎么做网站/网站项目开发流程

phpwind怎么做网站,网站项目开发流程,重庆专业做网站,dede如何手机网站和电脑网站的数据同步更新我有两个包含浮点值的numpy数组x和y.对于x中的每个值,我想在y中找到最接近的元素,而不重用y中的元素.输出应该是1-1的元素索引到y元素索引的映射.这是一种依赖于排序的坏方法.它删除从列表中配对的每个元素.如果没有排序,这将是不好的,因为配对将取决于原始输入数组的顺序. def…

我有两个包含浮点值的numpy数组x和y.对于x中的每个值,我想在y中找到最接近的元素,而不重用y中的元素.输出应该是1-1的元素索引到y元素索引的映射.这是一种依赖于排序的坏方法.它删除从列表中配对的每个元素.如果没有排序,这将是不好的,因为配对将取决于原始输入数组的顺序.

def min_i(values):

min_index, min_value = min(enumerate(values),

key=operator.itemgetter(1))

return min_index, min_value

# unsorted elements

unsorted_x = randn(10)*10

unsorted_y = randn(10)*10

# sort lists

x = sort(unsorted_x)

y = sort(unsorted_y)

pairs = []

indx_to_search = range(len(y))

for x_indx, x_item in enumerate(x):

if len(indx_to_search) == 0:

print "ran out of items to match..."

break

# until match is found look for closest item

possible_values = y[indx_to_search]

nearest_indx, nearest_item = min_i(possible_values)

orig_indx = indx_to_search[nearest_indx]

# remove it

indx_to_search.remove(orig_indx)

pairs.append((x_indx, orig_indx))

print "paired items: "

for k,v in pairs:

print x[k], " paired with ", y[v]

我更喜欢在不首先对元素进行排序的情况下执行此操作,但如果它们已经排序,那么我希望获取原始未排序列表中的索引unsorted_x,unsorted_y.在numpy / scipy / Python或使用pandas的最佳方法是什么?谢谢.

编辑:澄清我并不是想要找到所有元素的最佳匹配(例如,不是最小化距离的总和),而是最适合每个元素,并且如果它有时以牺牲其他元素为代价也没关系.我假设y通常比x大得多,与上面的例子相反,因此对于y中的x的每个值通常有很多非常好的拟合,我只想有效地找到它.

有人可以为此展示一个scipy kdtrees的例子吗?文档非常稀疏

kdtree = scipy.spatial.cKDTree([x,y])

kdtree.query([-3]*10) # ?? unsure about what query takes as arg

解决方法:

编辑2使用KDTree的解决方案可以很好地执行,如果您可以选择一些邻居,以确保您的阵列中的每个项目都有一个唯一的邻居.使用以下代码:

def nearest_neighbors_kd_tree(x, y, k) :

x, y = map(np.asarray, (x, y))

tree =scipy.spatial.cKDTree(y[:, None])

ordered_neighbors = tree.query(x[:, None], k)[1]

nearest_neighbor = np.empty((len(x),), dtype=np.intp)

nearest_neighbor.fill(-1)

used_y = set()

for j, neigh_j in enumerate(ordered_neighbors) :

for k in neigh_j :

if k not in used_y :

nearest_neighbor[j] = k

used_y.add(k)

break

return nearest_neighbor

和一个n = 1000点的样本,我得到:

In [9]: np.any(nearest_neighbors_kd_tree(x, y, 12) == -1)

Out[9]: True

In [10]: np.any(nearest_neighbors_kd_tree(x, y, 13) == -1)

Out[10]: False

所以最优是k = 13,然后时间是:

In [11]: %timeit nearest_neighbors_kd_tree(x, y, 13)

100 loops, best of 3: 9.26 ms per loop

但在最坏的情况下,你可能需要k = 1000,然后:

In [12]: %timeit nearest_neighbors_kd_tree(x, y, 1000)

1 loops, best of 3: 424 ms per loop

这比其他选项慢:

In [13]: %timeit nearest_neighbors(x, y)

10 loops, best of 3: 60 ms per loop

In [14]: %timeit nearest_neighbors_sorted(x, y)

10 loops, best of 3: 47.4 ms per loop

编辑在搜索之前对数组进行排序可以获得超过1000个项目的数组:

def nearest_neighbors_sorted(x, y) :

x, y = map(np.asarray, (x, y))

y_idx = np.argsort(y)

y = y[y_idx]

nearest_neighbor = np.empty((len(x),), dtype=np.intp)

for j, xj in enumerate(x) :

idx = np.searchsorted(y, xj)

if idx == len(y) or idx != 0 and y[idx] - xj > xj - y[idx-1] :

idx -= 1

nearest_neighbor[j] = y_idx[idx]

y = np.delete(y, idx)

y_idx = np.delete(y_idx, idx)

return nearest_neighbor

使用10000个元素的长数组:

In [2]: %timeit nearest_neighbors_sorted(x, y)

1 loops, best of 3: 557 ms per loop

In [3]: %timeit nearest_neighbors(x, y)

1 loops, best of 3: 1.53 s per loop

对于较小的阵列,它表现稍差.

如果只是为了丢弃重复项,您将不得不遍历所有项目以实现greedy最近邻居算法.考虑到这一点,这是我能够提出的最快速度:

def nearest_neighbors(x, y) :

x, y = map(np.asarray, (x, y))

y = y.copy()

y_idx = np.arange(len(y))

nearest_neighbor = np.empty((len(x),), dtype=np.intp)

for j, xj in enumerate(x) :

idx = np.argmin(np.abs(y - xj))

nearest_neighbor[j] = y_idx[idx]

y = np.delete(y, idx)

y_idx = np.delete(y_idx, idx)

return nearest_neighbor

而现在:

n = 1000

x = np.random.rand(n)

y = np.random.rand(2*n)

我明白了:

In [11]: %timeit nearest_neighbors(x, y)

10 loops, best of 3: 52.4 ms per loop

标签:python,pandas,numpy,scipy

来源: https://codeday.me/bug/20191005/1856181.html

http://www.jmfq.cn/news/4838833.html

相关文章:

  • b2b网站如何做社群运营/国内搜索引擎
  • 武汉做胃镜国医堂z网站/网络营销的营销策略
  • qq钓鱼网站在线生成器/b站推广网站2022
  • 实时定量引物设计网站怎么做/怎么做市场营销和推广
  • 做最好的win7系统下载网站/注册网站流程
  • 有做国外婚恋交友网站/东莞市网络seo推广服务机构
  • 2核4g做网站/词爱站的关键词
  • 柴油网站怎么做/网站查询关键词排名软件
  • 建筑木工模板包工价格/seo技术分享
  • 网站建设到发布2012sevser/2023新冠结束了吗
  • 网站 ca证书怎么做/关键词排名零芯互联排名
  • 如何选择网站建设案例/baidu百度
  • 企业网站建设webbj/南宁网站快速排名提升
  • 河北网站建设团队/网站优化关键词排名
  • 佛山市住房与城乡建设局网站/杭州网站推广优化公司
  • 佘山做网站/大数据营销成功案例
  • 北京游戏网站建设/怎么做线上销售
  • 外贸网站建设 广州/外国网站的浏览器
  • 助听器网站建设方案草稿/优秀网页设计
  • 做商城网站会不会被攻击/免费做推广的网站
  • 做书的网站有哪些内容吗/日本关键词热搜榜
  • dw内部网站链接怎么做/设计网站用什么软件
  • 天网网站建设/百姓网
  • 邯郸哪里做网站好/站内推广方案
  • 网站建设费计入那个科目/百度竞价排名商业模式
  • 网站怎么查哪家公司做的/南京市网站
  • 个人做电影网站服务器放国外安全吗/怎么在百度免费推广
  • 南充网站建设公司/网站推广关键词工具
  • wordpress改logo/整站seo服务
  • 开通建立企业网站/优化师是一份怎样的工作