Python中文
首页
教程
问答
标签
搜索
登录
注册
慢行比较与NumPy中的Forloops如何改进?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我使用<code>python</code>和<code>numpy</code>来比较两个数组或相等形状的坐标(x,y,z),以便匹配它们,如下所示:</p> <pre><code>coordsCFS array([[ 0.02 , 0.02 , 0. ], [ 0.03 , 0.02 , 0. ], [ 0.02 , 0.025 , 0. ], ..., [ 0.02958333, 0.029375 , 0. ], [ 0.02958333, 0.0290625 , 0. ], [ 0.02958333, 0.0296875 , 0. ]]) </code></pre> <p>以及</p> ^{pr2}$ <p>使用h5py从两个hdf5文件读取数据。 为了进行比较,我使用<a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.allclose.html" rel="nofollow">allclose</a>,它测试“几乎相等”。坐标在python的常规浮点精度内不匹配。这就是我使用for循环的原因,否则它将使用<code>numpy.where</code>。我通常试图避免for循环,但在这种情况下,我不知道如何避免。所以我想出了一个非常慢的片段:</p> <pre><code>mapList = [] for cfsXYZ in coordsCFS: # print cfsXYZ indexMatch = 0 match = [] for asterXYZ in coordRMED: if numpy.allclose(asterXYZ,cfsXYZ): match.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(indexMatch) # print "Found match at index " + str(indexMatch) # print asterXYZ indexMatch += 1 # check: must only find one match. if len(match) != 1: print "ERROR matching" print match print cfsXYZ return 1 # save to list mapList.append(match[0]) if len(mapList) != coordsRMED.shape[0]: print "ERROR: matching consistency check" print mapList return 1 </code></pre> <p>这对于我的测试样本大小(800行)来说非常慢。我打算比较大一点的。我可以删除一致性检查,并在内部for循环中使用<code>break</code>,以提高速度。还有更好的方法吗?在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>你可以用这样的方法去掉内部循环:</p> <pre><code>for cfsXYZ in coordsCFS: match = numpy.nonzero( numpy.max(numpy.abs(coordRMED - cfsXYZ), axis=1) < TOLERANCE) </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在乒乓球比赛中预测球的轨迹,对于AI球拍预测?
3 回答
如何在乒乓球游戏中阻止球
10 回答
如何在乘法和模中不乘空间?
6 回答
如何在乘法和除以2个不同的数字之间进行交换?
1 回答
如何在也是数据一部分的单个字符上拆分大字符串
6 回答
如何在乾草堆中找到針,有更好的解決方案嗎?
2 回答
如何在事件wxWidgets中传递自定义数据
4 回答
如何在事件中使用lambda i=i?
1 回答
如何在事件中心只接收最近的数据
4 回答
如何在事件发生之前保持云函数运行?
10 回答
如何在事件发生后使页面重定向到同一页面
10 回答
如何在事件回调之间保持python生成器的状态
3 回答
如何在事件处理程序(pythonsocket、sphinx)中保留docstring
6 回答
如何在事件处理程序中更改wxRichTextCtrl的光标位置?
9 回答
如何在事件处理程序中访问外部对象?
4 回答
如何在事件循环中将协程打包为正常函数?
1 回答
如何在事件循环之外运行协同程序?
7 回答
如何在事件循环结束时为并发未来的所有线程调用类方法?
8 回答
如何在事件文件中只保留一份摘要?
6 回答
如何在事件模板中添加事件
4 回答