python 轮廓矩阵_python – 在3D numpy矩阵中绘制给定值的曲面轮廓

我有三个对应于xyz坐标空间的3D网格矩阵(X,Y,Z).

我还有一个3D Numpy矩阵A,其中A [i,j,k]包含一个与点(x,y,z)相关联的浮点数,其中x = X [i,j,k],y = Y [i ,j,k]和z = Z [i,j,k].浮点值在A内是连续的(即A的相邻元素之间的值的变化通常很小).

有没有办法使用Matplotlib或任何其他基于Python的图形包绘制对应于A中给定浮点值的曲面?例如,如果给定值2.34,我有兴趣获得矩阵A的绘制轮廓曲面,只要2.34(加或减一些公差)出现?

到目前为止,我已经能够恢复A中所有值的xyz坐标,这些坐标在目标值的某个容差范围内,然后使用this(下面的代码)制作3D散点图.也许还有一种方法可以从这些点绘制表面?

def clean (A, t, dt):

# function for making A binary for t+-dt

# t is the target value I want in the matrix A with tolerance dt

new_A = np.copy(A)

new_A[np.logical_and(new_A > t-dt, new_A < t+dt)] = -1

new_A[new_A != -1] = 0

new_A[new_A == -1] = 1

return (new_A)

def get_surface (X, Y, Z, new_A):

x_vals = []

y_vals = []

z_vals = []

# Retrieve (x,y,z) coordinates of surface

for i in range(new_A.shape[0]):

for j in range(new_A.shape[1]):

for k in range(new_A.shape[2]):

if new_A[i,j,k] == 1.0:

x_vals.append(X[i,j,k])

y_vals.append(Y[i,j,k])

z_vals.append(Z[i,j,k])

return (np.array(x_vals), np.array(y_vals), np.array(z_vals))

cleaned_A = clean (A, t=2.5, dt=0.001)

x_f, y_f, z_f = get_surface (X, Y, Z, cleaned_A )

fig = plt.figure()

ax = fig.add_subplot(111, projection='3d', aspect='equal')

ax.scatter(x_f, y_f, z_f, color='g', s=1)

我也尝试过ax.plot_trisurf(x_f,y_f,z_f),但这给了我一个连接不佳的情节.我猜测我的数组中的值的排序可能会影响这个,在这种情况下,有一个包可以做点某些3D插值表面绘图与点的随机排序(例如通过最小化表面积或类似的东西?)

我感兴趣的对象是大致球形(即每个(x,y)两个z).我似乎无法找到有人在一个封闭的3D表面上进行三角测量的任何工作示例,但也许我没有找到正确的位置.

最佳答案 经过大量的挖掘,我认为我已经找到了一个有效的解决方案(至少在一个领域 – 当我尝试球体的变形时会更新我的答案).非常感谢有助于我思考正确道路的评论.我基本上使用ConvexHull从scipy.spatial进行三角测量:

from matplotlib.tri import Triangulation

from scipy.spatial import ConvexHull

def clean (A, t, dt):

# function for making A binary for t+-dt

# t is the target value I want in the matrix A with tolerance dt

new_A = np.copy(A)

new_A[np.logical_and(new_A > t-dt, new_A < t+dt)] = -1

new_A[new_A != -1] = 0

new_A[new_A == -1] = 1

return (new_A)

def get_surface (X, Y, Z, new_A):

x_vals = []

y_vals = []

z_vals = []

# Retrieve (x,y,z) coordinates of surface

for i in range(new_A.shape[0]):

for j in range(new_A.shape[1]):

for k in range(new_A.shape[2]):

if new_A[i,j,k] == 1.0:

x_vals.append(X[i,j,k])

y_vals.append(Y[i,j,k])

z_vals.append(Z[i,j,k])

return (np.array(x_vals), np.array(y_vals), np.array(z_vals))

cleaned_A = clean (A, t=2.5, dt=0.001)

x_f, y_f, z_f = get_surface (X, Y, Z, cleaned_A )

Xs = np.vstack((x_f, y_f, z_f)).T

hull = ConvexHull(Xs)

x, y, z = Xs.T

tri = Triangulation(x, y, triangles=hull.simplices)

fig = plt.figure()

ax = fig.add_subplot(111, projection='3d', aspect='equal')

ax.plot_trisurf(tri, z, color='g', alpha=0.1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

乌龟量化估值怎么看_推荐几个查询指数估值的网址

首先说一下&#xff0c;因为每一家网站的数据来源不同&#xff0c;因此在不同的网站上&#xff0c;相同指数的估值数据未必相同。但这不重要&#xff0c;只要大方向没错&#xff0c;对指数所处的估值区域有一个大致的概念&#xff0c;保持“模糊的正确”即可。以下推荐几个可以…

jmu-python-函数-找钱_python函数题 - osc_wv1mxwu2的个人空间 - OSCHINA - 中文开源技术交流社区...

请大家严格按照下面顺序编写圆形生成器程序。 &#xff1a;定义函数getCircleArea(r)&#xff0c;可以对指定r计算圆面积。计算公式math库的pi*r*r。定义函数get_rList(n)&#xff0c;功能&#xff1a;输入n个值放入列表并将列表return。输入n&#xff0c;调用get_rList(n)获得…

机器学习-01regression

主要内容&#xff1a; 1.回归模型的出现 2.回归模型的选择--使得损失最小 3.损失最小时&#xff0c;参数求值 梯度下降法 4.损失不理想&#xff0c;重新调整模型 5.添加正则表达式&#xff0c;即学习率 import numpy as np import matplotlib.pyplot as plt x_data [338.…

unity 草 可以一棵棵种吗?_这种野草人称“瓜子金”,1斤能卖50多,拔1棵少棵很珍贵...

欢迎来到“农民爱花草”&#xff0c;这里每天都会分享一些有关花草绿植的小知识&#xff0c;喜欢的朋友请“关注”今日导读&#xff1a;这种野草人称“瓜子金”&#xff0c;1斤能卖50多&#xff0c;拔1棵少棵很珍贵在我们广大的农村地区生活着很多的植物&#xff0c;有很多的植…

安装IntelliJ IDEA 2019.2激活

所有教程就是下载完成后&#xff0c;配置 我下载完jetbrains-agent-latest.rar将后缀名改为jar。添加----失败 百度了很多 都没有 最后把jetbrains-agent-latest.rar进行解压&#xff0c;将解压内容复制到IntelliJ中。再进行添加即可。 ps:刚开始安装完成后安装路径下没有im…

pytorch tensor查找0_Pytorch简单教程

2019 年&#xff0c;ML 框架之争只剩两个实力玩家&#xff1a;PyTorch 和 TensorFlow。研究者大批涌向 PyTorch&#xff0c;而业界的首选仍然是 TensorFlow。Pytorch和TensorFlow的区别&#xff1a;TensorFlow是基于静态计算图的&#xff0c;静态计算图是先定义后运行&#xff…

白盒测试-条件覆盖-短路陷阱

条件覆盖 ​要求设计足够多的测试用例&#xff0c;使得每一个判定的​每一个条件的每一个取值&#xff08;真或假&#xff09;至少各执行一次。 对于示例来说​&#xff0c;可以设计&#xff1a; {x4,y4,z11} 条件取值&#xff1a;TFTF {x2,y6,z9} 条件取值&#xff1a;F…

python编程题计算矩阵对角线_Python练习题 028:求3*3矩阵对角线数字之和

【Python练习题 028】 求一个3*3矩阵对角线元素之和-----------------------------------------------------这题解倒是解出来了&#xff0c;但总觉得代码太啰嗦。矩阵这东西&#xff0c;应该有个很现成的方法可以直接计算才对…… 啰嗦代码如下&#xff1a;str input(‘请输入…

抖音2020研究报告_抖音音乐发布2020抖音音乐生态数据报告

近几年&#xff0c;随着原创音乐产业规模逐年递增及数字音乐4.0时代觉醒&#xff0c;拓宽了原创音乐创作与宣发渠道&#xff0c;真正实现了大众娱乐生活从“听音乐”到“看音乐”到“玩音乐”的多重共振。11月5日&#xff0c;抖音音乐正式发布《2020抖音音乐生态数据报告》。报…

mysql主备切换 自动_核电生产管理信息系统EAM完成首次备用环境切换演练

安全是核电事业稳步发展的基石&#xff0c;中国核电始终将安全放在第一位&#xff0c;在系统设计及日常管理中&#xff0c;注重安全备用及安全冗余的考虑。核电生产管理信息系统作为核电现场业务的主要承载工具&#xff0c;在核电日常生产运行中发挥着越来越重要的作用。近日&a…

外星人台式电脑_戴尔 XPS 和外星人大更新,一边是生产力,一边是游戏

十代酷睿的到来&#xff0c;也催促着终端厂商更迭着旗下的产品线&#xff0c;而今年特殊的情况更让不少居家办公的人意识到生产工具和生产力的可贵。在学生们即将返校&#xff0c;白领们陆续回到办公室的当口&#xff0c;戴尔对旗下产品进行了大更新&#xff0c;全新的 XPS15 和…

C++ string s[10] 和 string s(10,‘ ‘)

string s[10] 定义了一个长度为10的字符串数组 string s(10, ) 定义一个字符串对象&#xff0c;只能存储10个字符 #include<iostream> #include<string> using namespace std; int main() {string ss1[10]; //定义了一个字符串数组 string ss2; //定义了一个字符…

string 中的offset_【Java基础】String常量的长度有限制吗?

备注&#xff1a;JDK版本&#xff1a;1.8.0最近同事问了我一个问题&#xff0c;String常量有长度限制吗&#xff1f;为什么会问起这个问题呢&#xff0c;因为同事在开发中确实遇到了IDEA编译器编译过程中提示字符串常量过长的异常。异常的出现也就证明了String常量是有长度限制…

param[:]=param-lr*param.grad/batch_size的理解

lr*param.grad/batch_size 结果最终为一个标量&#xff08;具体数值&#xff09; param是一个列表 param[:]param-lr*param.grad/batch_size会把列表中的所有元素分别运算&#xff1a; param-lr*param.grad/batch_size import numpy as np wnp.random.normal(scale0.01,siz…

anaconda3安装_Anaconda3软件安装教程

01获取方式Anaconda3 下载地址链接&#xff1a;https://pan.baidu.com/s/1lJJavzMGxjFvxYNyJ_nPAQ提取码&#xff1a;dc5c安装过程中有问题可咨询微信&#xff1a;d73707919702插件详细安装步骤1.找到下载好压缩文件包单击鼠解压到Anaconda32.待到解压完成后双击打开解压后的文…

pip命令提示unknow or unsupported command install解决方法

python的pip一直可以用 再次使用时突然发现有错误&#xff1a; 经百度一查&#xff0c;是因为安装了loadrunner&#xff0c;导致了系统无法识别到底应该用哪个pip。 解决方案&#xff1a; 第一种&#xff1a;删除strawberry&#xff0c;但是这样明显是会影响到其他软件的使用…

python怎么调用navicat_三十七、python操作mysql,和navicat

/*数据导入&#xff1a;Navicat Premium Data TransferSource Server : localhostSource Server Type : MySQLSource Server Version : 50624Source Host : localhostSource Database : sqlexamTarget Server Type : MySQLTarget Server Version : 50624File Encoding : utf-8D…

360浏览器登录_浏览器发展历史介绍及当今主流浏览器的详细对比

作为访问internet的工具&#xff0c;浏览器已经成为我们日常生活中必不可少的上网工具了&#xff0c;它能让你加入全球的网络&#xff0c;通过一个窗口就能够连接世界。当你用浏览器时有没有想过浏览器的发展历史&#xff1f;面对市场上繁多的浏览器你又为什么偏爱你现在用的&a…

backward理解

backward&#xff1a;自动求梯度。计算小批量随机梯度。 当模型和损失函数形式较为简单时&#xff0c;上面的误差最小化问题的解可以直接用公式表达出来。这类解 叫作解析解&#xff08;analytical solution&#xff09;。本节使用的线性回归和平方误差刚好属于这个范畴。然而…

python 归并排序算法_python基本算法之实现归并排序(Merge sort)

0、前言评判一个算法的好坏的标准&#xff1a;时间复杂度空间复杂度1、归并排序算法是什么&#xff1f;冒泡排序(Bubble Sort)是一种建立在归并操作上面的一种有效的排序算法&#xff0c;由John von neumann于1945年发明。采用分治法(Divide and Conquer)的经典应用&#xff01…