Python 拉丁超立方采样
2015-09-22 14:22
1271 查看
#coding=utf-8 from __future__ import division __author__ = 'wanghai' import numpy as np from matplotlib.ticker import MultipleLocator, FuncFormatter import matplotlib.pyplot as pl def LHSample( D,bounds,N): ''' :param D:参数个数 :param bounds:参数对应范围(list) :param N:拉丁超立方层数 :return:样本数据 ''' result = np.empty([N, D]) temp = np.empty( ) d = 1.0 / N for i in range(D): for j in range(N): temp[j] = np.random.uniform( low=j * d, high=(j + 1) * d, size = 1)[0] np.random.shuffle(temp) for j in range(N): result[j, i] = temp[j] #对样本数据进行拉伸 b = np.array(bounds) lower_bounds = b[:,0] upper_bounds = b[:,1] if np.any(lower_bounds > upper_bounds): print '范围出错' return None # sample * (upper_bound - lower_bound) + lower_bound np.add(np.multiply(result, (upper_bounds - lower_bounds), out=result), lower_bounds, out=result) return result if __name__ =='__main__': D = 2 N = 30 bounds = [[0,90],[0,90]] xs = (bounds[0][1] - bounds[0][0])/N ys = (bounds[1][1] - bounds[1][0])/N ax = pl.gca() pl.ylim(bounds[1][0] - ys,bounds[1][1]+ys) pl.xlim(bounds[0][0] - xs, bounds[0][1] + xs) pl.grid() ax.xaxis.set_major_locator( MultipleLocator(xs) ) ax.yaxis.set_major_locator(MultipleLocator(ys)) samples = LHSample(D,bounds,N) XY = np.array(samples) X = XY[:,0] Y = XY[:,1] pl.scatter(X,Y) pl.show()
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法