题目

定义一个高维空间样本点集类HDPoints,须包含以下数据属性与方法属性:

(a)数据属性self.points:类型为列表,由多个子列表构成,每个子列表表示高维空间中的一个数据点,且数据维度可以任意,并通过初始化构造函数获得。

(b)方法属性centerpoint(self):计算点集的中心点。

(c)方法属性minkowski (self, x, y, p):计算两点x和y之间的闵可夫斯基距离,p为非负整数,用p=0情形表示切比雪夫距离。由此定义的距离称为p-闵氏距离,其数学定义如下:

(d)方法属性farthestpoint(self, p):找出离中心点p-闵氏距离最远的点,返回在self.points中的下标以及最大距离。

(e)方法属性farthest2points(self, p):找出点集self.points中p-闵氏距离最远的两点,返回两点在self.points中的下标及其最大距离。

要求

接下来,实例化类HDPoints,利用random模块,随机产生至少50个高维空间数据点,样本点的维度至少在5以上,且每个分量取值服从区间[0,1]上的均匀分布。同时,随机产生一个0~5之间的一个非负整数,赋值传递给p-闵氏距离函数中的参数p,对HDPoints实例对象的全部自定义方法属性(即centerpoint()、minkowski()、farthestpoint()和farthest2points())进行功能测试。

代码

import numpy as npclass HDPoints(object):def __init__(self,list_HDPoints):self.points=list_HDPointsdef centerpoint(self):# 转化为高维数组,数组要求长度一致m=np.array(self.points)return sum(m) / len(m)def minkowski (self, x, y, p):if (p==0):p=1return sum([abs(x - y) ** p for x, y in zip(x, y)])**(1/p)def farthestpoint(self, p):centerPoint=self.centerpoint()list_instance=[self.minkowski(centerPoint,i,p)for i in self.points]max1=max(list_instance)return list_instance.index(max1),max1def farthest2points(self, p):max=0l1,l2=[],[]for i in self.points:for j in self.points[self.points.index(i)+1::]:if self.minkowski(i,j,p)>max:max=self.minkowski(i,j,p)l1,l2=i,jreturn max,self.points.index(l1),self.points.index(l2)#产生50个高维点
a=np.random.uniform(0,5,(50,5))
m=[]
for i in a:m1=[]for j in i:m1.append(int(j))m.append(m1)
print(m)
HD_Point=HDPoints(m)print("中心点是:",HD_Point.centerpoint())
print("两点之间的闵可夫斯基距离是:",HD_Point.minkowski([3,4,5,6],[2,3,4,5],4))
print("当p=5时,离中心点距离最远的点和下标是:",HD_Point.farthestpoint(5))
print("当p=5时,距离最远的两个点下标和距离是:",HD_Point.farthest2points(5))

【Python经典题目】闵可夫斯基距问题相关推荐

  1. 百看不如一练 100道python经典题目,拿去参考学习练手(附答案)可复制

    近年来,Python在编程语言界里赚足了风头,无论是受欢迎程度,还是薪资待遇,都非常可观,相应的,Python岗位要求也越来越高,无论你是零基础还是老前辈,在Python面试中都不能轻视. 不打无准备 ...

  2. [数据结构][Python][经典题目]明星问题

    在人群中找出以为明星人士.该明星不认识其他人群中的其他人,但是人人都认识这位明星. 暴力求解方案: def naive_celeb(G):n = len(G)for u in range(n):for ...

  3. python内建函数使用方法_python基础学习笔记(实用的内建函数和经典题目收集)...

    说明:本手记大部分知识点摘自菜鸟教程,包括代码示例.(菜鸟教程的学习资源真心很好用,把它当查询工具书灰常给力) 1. 字符串方法中的string模块 maketrans ( ) 和translate( ...

  4. c语言编程 输入螺旋数组,C语言 经典题目螺旋矩阵 实例详解

    C语言 经典题目螺旋矩阵 实例详解 C语言 经典题目螺旋矩阵 //N阶螺旋矩阵 #include #include int main() { int N,i,j,n,num=1; int a[10][ ...

  5. Python 经典模块可能都学过,10道题测试你会不会用?

    Python 作为 2021 年度最受欢迎的编程语言,备受众人瞩目,也很受新手小白喜爱.除此之外,它在很多领域都发挥其作用,比如大数据.无人驾驶.Web 开发等等. [敲重点] 蓝桥云课即将在 202 ...

  6. python 经典100例 (61-80)

    python 经典100例(61-80) ''' [程序61] 题目:打印出杨辉三角形(要求打印出10行如下图) 1.程序分析: ''' if __name__ == '__main__': a = ...

  7. python经典100例(41-60)

    python 经典100例(41-60) ''' [程序41] 题目:学习static定义静态变量的用法 1.程序分析: 2.程序源代码: ''' # python没有这个功能了,只能这样了:) de ...

  8. python经典程序实例-你不知道的Python语言的经典五大案例

    原标题:你不知道的Python语言的经典五大案例 身为全国三大主流编程语言之一,Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库.Python的简单入门及其它的全能型,能适应所 ...

  9. LeetCode:数组刷题(17道经典题目)

    LeetCode 数组刷题(17道经典题目) 本文带来的是以数组为主题的经典题目,主要实现是C++,部分题目也用Python实现了. 704. 二分查找 35.搜索插入位置 34. 在排序数组中查找元 ...

最新文章

  1. Java中的自动装箱和拆箱
  2. PYTHON系列-从零开始的爬虫入门指南
  3. BootStrap学习(6)_模态框
  4. wxWidgets:常用对话框
  5. 设计模式原则总结--读《大话设计模式》有感 转
  6. mysql数据库 常用函数_《MySQL数据库》常用函数整理
  7. springboot-RequestMappingHandlerMapping
  8. 数据结构与算法简单总结()
  9. seata实现分布式事务解决方案
  10. python kmeans聚类_K-means聚类算法的Python实现
  11. WINDOWS BAT的命令,双引号位置要注意
  12. ad中装配图如何导出_AD的PDF文件如何进行输出,你都掌握了?
  13. ZYNQ - 嵌入式Linux开发 -10- ZYNQ启动流程分析
  14. 【Updating】二〇二一流水账
  15. oracle 添加索引
  16. java 入参校验_Java Validation方法入参校验实现过程解析
  17. 2.液晶显示屏结构简介
  18. 钱币兑换问题c语言编程,HDU 1284 钱币兑换问题
  19. 流量互点PHP源码,点击量软件-求一个网页可以增加流量的软件?要释放。 。 。自由...
  20. 艺术科学,物物皆通 ——观《达·芬奇的人生密码》有感

热门文章

  1. 人工神经网络算法实例代码,人工神经网络算法步骤
  2. 三元一次在线计算机,中南大学网络教育 高起专 《计算机基础》在线作业三参考答案 5...
  3. mysql 查询表后三行数据库_单表千万行数据库 LIKE 搜索优化手记
  4. 【转载】女浴室起火之九个震撼的故事,不看一定会后悔
  5. 4.8 使用色彩均衡命令更换图像色调 [原创Ps教程]
  6. 为什么手机换张卡就有就显示无服务器,手机卡为何一直显示无服务,但是在自家城市就会有信号。换了个城市就无服务了。...
  7. cocos creator 发布IOS版本(六)内购
  8. 第四篇:基于小米手机的,Edxposed教学
  9. 工具方法:一次性将对象中所有null字段,转为空字符串
  10. python爬取学校新闻_Python抓取学院新闻报告